我有大约90年的每日数据,我想绘制长期均值,以及我调查期间(2014-2018)每年的单独行数。数据如下所示:
> head(dischg)
date ddmm year cfs daymo
1 1-Jan-27 01-Jan 1927 715 2018-01-01
2 2-Jan-27 02-Jan 1927 697 2018-01-02
3 3-Jan-27 03-Jan 1927 715 2018-01-03
4 4-Jan-27 04-Jan 1927 796 2018-01-04
5 5-Jan-27 05-Jan 1927 825 2018-01-05
6 6-Jan-27 06-Jan 1927 865 2018-01-06
我已经能够很容易地绘制长期意味着:
p1 <- ggplot(dischg, aes(x=daymo, y=cfs)) +
stat_summary(fun.data = "mean_cl_boot", geom = "smooth", colour = "blue")
...但是我需要一些帮助来绘制年份的子集。我尝试使用“子集”
p2 <- p1 +
ggplot (subset(dischg, year %in% c(2014:2018)), aes(x=daymo, y=cfs, linetype=year)) +
geom_line() +
scale_colour_brewer(palette="Set1")
但我收到了这个错误:
错误:不知道如何在剧情中添加o
一次只添加一年会更聪明吗?当有五年的数据绘制时,这看起来有点麻烦。
答案 0 :(得分:1)
感谢您提供示例数据,但遗憾的是,我无法使用您提供的示例数据运行ggplot
代码,因此我将使用内置的R数据集。但概念是相同的。
问题是您正在尝试将ggplot
添加到已经为ggplot
类的对象中。将对象初始化为ggplot
对象后,每次要添加图层时都不需要调用ggplot
。例如,如果我尝试,我会遇到同样的错误:
p1 <- ggplot(mtcars, aes(x=hp,y=cyl)) + geom_point()
p2 <- p1 + ggplot(mtcars[mtcars$am == 1, ], aes(x = hp, y = cyl)) + geom_line()
正如我的评论中所提到的,如果您想要添加另一个包含单独数据的图层(在您的情况下为geom_line
),您可以将数据直接放入geom_
调用中。在你的情况下,你会做类似的事情:
p1 <- ggplot(mtcars, aes(x=hp,y=cyl)) + geom_point()
p2 <- p1 + geom_line(data = mtcars[mtcars$am == 1, ])
p2
答案 1 :(得分:0)
感谢@MikeH的反馈,我明白了:
p1 <- ggplot(dischg, aes(x=daymo, y=cfs)) +
stat_summary(fun.data = "mean_cl_boot", geom = "smooth", colour = "blue") +
geom_line(data=subset(dischg, year %in% c(2014:2018)),
aes(colour=year)) +
scale_colour_brewer(palette="Set1")
(另外,我必须确保&#39; year&#39;是一个因素,而不是一个连续的变量。)