添加水平线到ggplot

时间:2012-05-25 03:37:58

标签: r graphics ggplot2

我想使用ggplot2在一个绘图中绘制不同颜色的多行,然后添加一个单独的水平线。我的代码如下。它运行良好,直到我运行最后一行p + geom_hline(yintercept=400)。所有的线条变黑,右侧的传说消失。

有谁知道如何解决这个问题?

library(ggplot2)
mry <- do.call(rbind, by(movies, round(movies$rating), function(df) { 
       nums <- tapply(df$length, df$year, length) 
        data.frame(rating=round(df$rating[1]), year = as.numeric(names(nums)), 
        number=as.vector(nums)) 
        }))
p<-qplot(year, number, data=mry, group=rating, geom="line",xlab = 'year',
     ylab = 'number')

p + geom_line()

p + geom_line(aes(colour = rating))

p + geom_hline(yintercept=400)

2 个答案:

答案 0 :(得分:6)

您没有保存中间步骤。每个情节都只向p添加一件事。如果你想保留刚刚添加的部分,你需要做类似的事情:

p <- p + geom_line(aes(colour = rating))

答案 1 :(得分:2)

上述问题的具体解决方案可能是将您的最后一行代码p + geom_hline(yintercept=400)移动到最后一行的第二行。

这会使您的最后一行代码看起来像p + geom_line(aes(colour = rating)) + geom_hline(yintercept=400)。您还可以将最后三行合并到p + geom_line(aes(colour = rating)) + geom_hline(yintercept=400)

基本上重述了乔兰建议的内容,但我试图让它更具体。