ggplot2:连接分组数据的方法

Sam*_*eer 23 r ggplot2

我试图将我的数据的一个变量分组,然后通过平均值绘制一条线.当两个变量都是数字时,它工作正常.但是,当分组变量是一个因素时,我遇到了问题.我在下面有一个模拟.

x <- sample(1:3, 40, replace=T)
y <- rnorm(40)

df1 <- data.frame(x, y)
qplot(x, y, data=df1) + stat_summary(fun.y=mean, colour="red", geom="line")
Run Code Online (Sandbox Code Playgroud)

替代文字

这看起来很棒.但是如果x变量是一个因素,我就不会得到这条线.

df2 <- data.frame(x=as.factor(x), y)
qplot(x, y, data=df2) + stat_summary(fun.y=mean, colour="red", geom="line")
Run Code Online (Sandbox Code Playgroud)

替代文字

我能做些什么才能显示这一行?

PS.geom ="point"有效但不是geom ="line"

qplot(x, y, data=df2) + stat_summary(fun.y=mean, colour="red", geom="point")
Run Code Online (Sandbox Code Playgroud)

替代文字

谢谢阅读!!

JoF*_*wld 29

ggplot2故意使得在x轴因子上绘制线条有点棘手,因为你需要确保它有意义.如果你的x轴是"纽约","费城"和"波士顿",画一条线连接它们不是一个好主意.

但是,假设您的x变量具有有意义的顺序,则必须定义group美学以绘制所需的线条.在这里,group = 1.

qplot(x, y, data=df2) + 
  stat_summary(fun.y=mean, colour="red", geom="line", aes(group = 1))
Run Code Online (Sandbox Code Playgroud)

如果您只是添加geom_line()到这样的图中,则必须以类似的方式定义分组变量.

  • 这些解决方案不再有效.它们会产生错误:"geom_path:每组只包含一个观察.你需要调整群体美感吗?" (6认同)
  • `ggplot(df2,aes(x = x),y = y))+ stat_summary(fun.y ="mean",geom ="line",aes(group = factor(grouping)))`为我工作 (4认同)