R - 在线图上按子组和整体查看均值

时间:2014-10-19 16:00:51

标签: r plot

我正在尝试创建一些相当简陋的线图,但似乎无法找到合适的函数。我可以使用mtcars数据集来描述我想要做的事情,我希望你能够给我一个正确的方向。

我想在x轴上绘制cyl,在y轴上绘制disp的MEAN值(对于cyl的每个值)。使用整个数据集。然后在TOP上,我想在x轴上绘制cyl,在y轴上绘制disp的平均值,但是当VS == 1时。那么相同的东西,一个类似的子群,当vs == 0时。所以会有三条线,每条线都跟踪一次。最终我也会制作这些不同的颜色/样式,但是现在我只是试图获得折线图。

有什么想法?非常感谢!

2 个答案:

答案 0 :(得分:1)

stat_summary中使用ggplot2

enter image description here

library(ggplot2)
ggplot() + 
# cyl on the x-axis and the MEAN value of disp (for each value of cyl) 
 stat_summary(aes(x=cyl,y=disp,col='all vs'),data=mtcars,fun.y='mean',geom='line') +
#  cyl on the x-axis and the mean value of disp on the y-axis BUT ONLY WHEN VS == 1 . 
 stat_summary(aes(x=cyl,y=disp,col='vs=1'),data=subset(mtcars,vs==1),
          fun.y='mean',geom='line') +
# Then the same thing, a similar subgroup, for when vs==0. 
 stat_summary(aes(x=cyl,y=disp,col='vs=0'),data=subset(mtcars,vs==0),
          fun.y='mean',geom='line')  +
 theme(legend.title=element_blank())

答案 1 :(得分:1)

您可以使用stat_summary执行此类操作,但对于更复杂的摘要,实际上可能更容易预先执行此操作(例如,使用dplyrplyr::ddply)和然后将其提供给ggplot2

library("ggplot2"); theme_set(theme_bw())
ggplot(mtcars,aes(cyl,disp))+stat_summary(fun.y=mean,
                                          geom="line",
                                          lwd=1.5)+
     stat_summary(aes(lty=factor(vs)),fun.y="mean",geom="line")+
   scale_x_continuous(breaks=c(4,6,8),labels=c("four","6","8"))                

enter image description here