您需要添加stackgroups=TRUE
以使两种不同的颜色不会相互叠加。
n=20
set.seed(15)
d = data.frame(x = sample(seq(1,10,1), n, replace = TRUE),
color = c(rep("red",n/2), rep("green",n/2)))
table(d$x[order(d$x)])
length(d$x[order(d$x)])
binwidth= 1
ggplot(d, aes(x = x)) +
geom_dotplot(breaks = seq(0.5,10.5,1), binwidth = binwidth,
method="histodot", aes(fill = color),
stackgroups=TRUE) +
scale_x_continuous(breaks=1:10)
此外,ggplot 使用其内部调色板进行填充美学。无论您将数据中“颜色”列的值称为什么,您都会得到相同的颜色。scale_fill_manual(values=c("green","red"))
如果要手动设置颜色,请添加。