在ggplot中添加水平线

4
我想使用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个回答

7

你没有保存中间步骤。每个绘图只是向 p 添加了一个东西。如果你想保留刚刚添加的那一部分,需要做类似以下的操作:

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

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)。基本上,重新阐述了joran的建议,但我试图让它更具体易懂。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接