尝试根据因子列为叠加的直方图着色;所有酒吧都有“绿色”屋顶?我希望酒吧顶部与酒吧本身颜色相同。下图清楚地显示了什么是错误的。所有的酒吧顶部都有一条“绿色”水平线?
这是一个虚拟数据集:
BodyLength <- rnorm(100, mean = 50, sd = 3)
vector <- c("80","10","5","5")
colors <- c("black","blue","red","green")
color <- rep(colors,vector)
data <- data.frame(BodyLength,color)
我用来生成下图的程序:
plot <- ggplot(data = data, aes(x=data$BodyLength, color = factor(data$color), fill=I("transparent")))
plot <- plot + geom_histogram()
plot <- plot + scale_colour_manual(values = c("Black","blue","red","green"))
此外,由于数据列本身包含颜色名称,所以我不必在scale_color_manual中再次指定它们? ggplot可以从数据本身识别它们吗?但我现在非常想帮助解决第一个问题......谢谢。
答案 0 :(得分:1)
这是一种快速获取颜色scale_colour_manual
而无需写出矢量的方法:
data <- data.frame(BodyLength,color)
data$color<- factor(data$color)
然后,
scale_colour_manual(values = levels(data$color))
现在,关于你的第一个问题,我不知道为什么你的酒吧有绿色屋顶。但是,您可能希望在geom_histogram中查看位置参数的一些不同选项,例如
plot + geom_histogram(position="identity")
..或position="dodge"
。 identity
选项更接近你想要的但是由于绿色是绘制的最后一行,它会覆盖以前的颜色。
我自己更喜欢这些问题的密度图。
ggplot(data=data, aes(x=BodyLength, color=color)) + geom_density()
ggplot(data=data, aes(x=BodyLength, fill=color)) + geom_density(alpha=.3)