使用stat_summary(ggplot)在图上堆叠不同的变量

时间:2017-10-10 15:30:49

标签: r ggplot2 graph statistics summary

上下文:我希望在实验过程中以图形方式比较工作负载和信任随时间的变化。时间由2个街区表示。

问题:我试图在同一图表上用不同的单位绘制不同的变量来比较进化。我只发现它适用于geom_line,但它不适用于stat_summary。

数据:x是表示时间的“阻止”(2个块)。用于y的变量是“工作量”和“信任”(均为1到5,通过询问主题获得)。 提供一些数据:

data = data.frame("Subject" = c(1,1,2,2,3,3), "Block" = c(1,2,1,2,1,2), "Workload" = c(1,5,2,4,3,3), "Trust" = c(4,1,3,2,2,1))

我试过这个,它有效:

ggplot(data, aes(Block)) + geom_line(aes(y = Trust)) + geom_line(aes(y = Workload))

然而,它并没有产生令人信服的结果:因为我有多个点,所以它为每个值链接它们,这样我只获得垂直特征。考虑到geom_line应该做什么,这是完全正常的。 所以我仍然可以计算每个块和每个变量的均值,但是我想知道是否可以使用stat_summary获得直接结果,使用类似的东西:

ggplot(data, aes(Block)) + stat_summary(fun.y = mean, geom = line, aes(y = Trust)) + stat_summary(fun.y = mean, geom = line, aes(y = Workload))

感谢所有致力于解决这一问题的人。

度过美好的一天!

Pyxel

1 个答案:

答案 0 :(得分:0)

我建议您在绘图前总结一下数据。考虑一下:

library(tidyverse)
df <- data_frame("Subject" = c(1,1,2,2,3,3), 
                 "Block" = c(1,2,1,2,1,2),
                 "Workload" = c(1,5,2,4,3,3), 
                 "Trust" = c(4,1,3,2,2,1))
grouped <-
  df %>%
  group_by(Block) %>%
  summarise(trust = mean(Trust),
            workload = mean(Workload))

ggplot(grouped, aes(x = Block)) + 
  geom_line(aes(y = trust)) + 
  geom_line(aes(y = workload))