在ggplot中更改x轴值

时间:2015-03-15 17:44:22

标签: r ggplot2

我有一个名为Finalcombined的数据框,其中包括季度(2004年第一季度到2013年第四季度)和Labourproductivity。

quarter LabourProductivity
==========================
2004 Q1    96.6
2004 Q2    96.9
2004 Q3    96.9
2004 Q4    97.1
2005 Q1    97.6

labourproductivitygraph <- ggplot(data=Finalcombined, aes(x=quarter, y=LabourProductivity))+geom_line(colour="black", size=0.5) +
  labs(x="Time[Quarter]", y=("Labour Productivity")) +
  theme(panel.grid.major = element_line(colour = "white", size=0.50),
        panel.grid.minor = element_line(colour = "white", size=0.16)) +
  theme(axis.text=element_text(size=16), axis.title=element_text(size=16,face="bold")) +
  geom_point(colour="black", size=2, shape=16) +
  geom_smooth(method=lm, se=TRUE, col="blue", size=0.70, alpha=0.40, aes(group=1)) 
labourproductivitygraph

运行此代码后,我收到以下错误:

geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

这里的问题是你的X变量不是ggplot识别为连续的格式。因为它看到&#34; Q1 2004&#34;,例如,作为字符串,X变量被解释为一个因子。这解释了你得到的错误 - 它看起来像ggplot那样试图对一堆只有一个值的组进行统计,这通常不是人们想要做的事情。

所以要解决这个问题,你需要将X变量转换为ggplot识别为连续的东西。这可以是日期或一系列数字。假设您有每季度的数据,最简单的做法可能是使用从1到数据帧长度的占位符序列。您可以将此序列用作X变量,并使用quarter变量标记沿X轴的刻度。这是一些示例代码:

Finalcombined$sequence <- c(1:length(Finalcombined$quarter))
labourproductivitygraph <- ggplot(data=Finalcombined, aes(x=sequence, y=LabourProductivity))+geom_line(colour="black", size=0.5) + labs(x="Time[Quarter]", y=("Labour Productivity")) + theme(panel.grid.major = element_line(colour = "white", size=0.50), panel.grid.minor = element_line(colour = "white", size=0.16)) + theme(axis.text=element_text(size=16), axis.title=element_text(size=16,face="bold")) + geom_point(colour="black", size=2, shape=16) + geom_smooth(method=lm, se=TRUE, col="blue", size=0.70, alpha=0.40) + scale_x_continuous(labels=quarter)
labourproductivitygraph

这能解决您的问题吗?