大家。我在问这里之前已经搜索了很多,但我无法理解错误。此外,我是R和编码的初学者,从现在开始抱歉任何不良编码。
我有一个包含144行,177列的数据框df
,显示timeAverage
函数openair package
在2005-2016之间的月平均年数。我使用apply
按ggplot
生成多行线图。
这是df
的小例子:
date Year Month Adana-Catalan Adana-Dogankent Adana-Meteoroloji
2008/09/01 2008 9 NaN NaN NaN
2008/10/01 2008 10 NaN NaN 1.7948718
2008/11/01 2008 11 NaN NaN 2.0909091
2008/12/01 2008 12 1.2694064 12.2384106 0.7272727
2009/01/01 2009 1 2.3150358 12.7479339 10.3779762
2009/02/01 2009 2 2.8241107 18.4320175 2.4494949
2009/03/01 2009 3 2.0401606 8.4597523 1.6529412
2009/04/01 2009 4 1.8604651 4.8560000 1.1267606
2009/05/01 2009 5 2.1087719 1.8202247 NaN
2009/06/01 2009 6 4.0695103 2.1463415 1.1111111
2009/07/01 2009 7 5.4016393 8.1298905 NaN
2009/08/01 2009 8 0.1313869 16.9874411 NaN
2009/09/01 2009 9 NaN 5.3753943 NaN
2009/10/01 2009 10 1.6626506 8.8000000 1.8388889
2009/11/01 2009 11 1.4177632 NaN 3.9879154
2009/12/01 2009 12 0.9644128 NaN 5.0281457
2010/01/01 2010 1 0.2608696 4.0898876 3.1981424
2010/02/01 2010 2 0.7619048 NaN 4.3169811
然后我将以下代码应用于df:
library(openair)
library(ggplot2)
yVariables <- names(df[,4:ncol(df)])
xVariables <- names(df[,3])
gg <- expand.grid(xVariables, yVariables)
gg <- data.frame(lapply(gg,as.character), stringsAsFactors=FALSE)
gg
看起来像这样:
Var1 Var2
Month Adana-Catalan
Month Adana-Dogankent
Month Adana-Meteoroloji
然后生成我在代码下面应用的线图:
apply(gg,1,function(x) ggplot(df,aes_string(x=x[1], y=x[2], shape=names(df[,3]),
group=names(df[,2:3])))+geom_line(aes(color=factor(Year)))+
geom_point(aes(colour=factor(Year)))+scale_shape_identity()+
theme_bw()+scale_x_continuous(breaks=round(seq(min(df$Month),max(df$Month),by=1),1))
+ggtitle(x[2])+labs(y=expression("SO"[2] * " (ug/m"^3*")"),x="Aylar",color="Yıllar")+theme(plot.title=element_text(hjust=0.5)))
预期的线图应该是这样的:Adn_Meteoroloji
但是,当我运行代码时,我会收到Error in eval(expr, envir, enclos) : object 'Adana' not found
。要修复此错误,我在列名称中添加引号,如下所示:
colnames(df)[4:ncol(df)] <- paste("'",colnames(df)[4:ncol(df)],"'")
当我再次运行代码时,会生成如下情节:'Adana-Meteoroloji'这与我想要的实际情节相差甚远。其实我不知道为什么会改变。
更新:当我写这个问题并运行R时,我意识到用-
更改_
工作正常,不需要添加引号专栏名称。
所以我理解-
_
和ggplot2
之间存在差异,但我不知道为什么。
任何人都可以帮助我理解吗?提前致谢。