2014-10-17 95 views
0

我是新来GGPLOT2但决定去学习它,因为我喜欢它的简单性和视觉效果。我有几个城市的降雨时间序列(动物园)。看着其他的问题,我发现了如何重塑,并绘制它:添加趋势线,部分地块

df <- data.frame(time = time(rain.yr), 
       city = rep(colnames(rain.yr), each = nrow(rain.yr)), 
       value = as.vector(rain.yr)) 
ggplot(df, aes(x=time, y=value)) + 
geom_line() + 
facet_wrap(~ city, ncol=4) 

我真的很喜欢的最终结果在视觉效果方面,因为它提供了每个城市,但随着全球轴一个情节。我发现如何添加趋势:stat_smooth(method="lm")

问题是,我想添加趋势线到一些情节,而不是所有的情节;只是那些趋势显着的人(我有一个向量有零和sig /非sig的向量)。

我知道如何与基础图形(使用参数和一个循环来绘制,只添加行,如果趋势是显著),但有在GGPLOT2做这件事的方式做到这一点?

+0

无法重现,但您应该能够获取您的数据的子集并在'stat_smooth(data = ...)'中使用它以仅保留您想要绘制直线的数据。 – konvas 2014-10-17 13:10:11

+0

谢谢,但我不明白如何做到这一点;我怎样才能用'data ='选择一些城市?如果我试着做'stat_smooth(method =“lm”,data =“Berlin”)'我得到'错误:ggplot2不知道如何处理类字符数据。我尝试在df中添加一个名为“sigs”的列(用零和一),并执行'stat_smooth(method =“lm”,data = df $ sigs',但这只是给出了错误:ggplot2不知道如何处理带班numeric'的数据... – sbg 2014-10-17 13:42:39

+0

建议提供样本数据,因此这里的人可以尝试 – KFB 2014-10-17 13:52:16

回答

1

由于作为被提出,只是创建要平滑的子集的数据帧,并用其作为数据stat_smooth()

subdf<-diamonds[which(diamonds$clarity %in% c('SI2','SI1')),] 
ggplot(diamonds,aes(x=carat,y=depth))+geom_point() + facet_wrap(~clarity) + geom_smooth(data=subdf)