Position =“dodge”或“jitter”不能与geom_segments一起使用

时间:2012-06-13 15:09:33

标签: r ggplot2

很抱歉转发,但我有一个更好的工作示例,反映了我的问题。我想出了即使在数据丢失的情况下如何提供保持一致的自定义颜色(例如,如果以下示例中的Species省略了setosa,颜色应该保持一致)。但现在我无法让geom_segments遵循“闪避”参数。我也试过“抖动”,甚至使用position_jitter(宽度= 0.25)进行自定义抖动。

colours <- c("#FF0000", "#33CC33", "#CCCCCC", "#FFA500", "#000000" )
iris$Month <- rep(seq(from=as.Date("2011-01-01"), to=as.Date("2011-10-01"), by="month"), 15)
d<-aggregate(iris$Sepal.Length, by=list(iris$Month, iris$Species), sum)
d$quota<-seq(from=2000, to=60000, by=2000)
colnames(d) <- c("Month", "Species", "Sepal.Width", "Quota")
d$Sepal.Width<-d$Sepal.Width * 1000
g1 <- ggplot(data=d, aes(x=Month, y=Quota, color="Quota")) + geom_line(size=1)
g1 + geom_segment(data=d, mapping=aes(x=Month, y=0, ymax=Sepal.Width, yend=Sepal.Width, xend=Month, group=Species, color=Species, size=1), position="dodge") + scale_color_manual(values=colours)

geom_segments重叠,我希望它们彼此相邻。以前我只是用自己的图层逐个创建每个细分,并偏移x轴(月+ 5,月+ 10等)。但是我无法以这种方式获得每条线的自定义颜色。

感谢任何指导。

1 个答案:

答案 0 :(得分:2)

听起来你正试图用线段制作条形图......而是使用:

ggplot(d, aes(x=Month, y=Sepal.Width)) + 
  geom_bar(stat='identity', position='dodge')