下划线(_)和常规连字符( - )更改ggplot2结果

时间:2017-07-13 19:32:06

标签: r plot ggplot2 underscore.js hyphen

大家。我在问这里之前已经搜索了很多,但我无法理解错误。此外,我是R和编码的初学者,从现在开始抱歉任何不良编码。

我有一个包含144行,177列的数据框df,显示timeAverage函数openair package在2005-2016之间的月平均年数。我使用applyggplot生成多行线图。

这是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之间存在差异,但我不知道为什么。

任何人都可以帮助我理解吗?提前致谢。

0 个答案:

没有答案