如何在ggplot2 R中创建反应规范(逐行连接)?

时间:2019-02-21 22:27:24

标签: r ggplot2 line

我有以下数据,在这里我想绘制两个时间点(t1,t2)上物种1和2的“值”。我想创建一个绘图,使用geom_points(不同的颜色)可以看到每个物种的原始值。另外,我想使用较大的相同颜色来显示均值。 对于给定的物种,我想将t1和t2的均值(也称为反应范数)联系起来。因此,在此示例中,种类1的线应向上倾斜,种类2的线应保持不变。

我尝试了基本的ggplot2,但是我不知道如何添加行并以更大的尺寸显示均值。同样,由于某种原因,“填充”不会产生不同的颜色。

time <- c("t1","t1","t1","t1","t1","t1","t2","t2","t2","t2","t2","t2")
species <- c(1,1,1,2,2,2,1,1,1,2,2,2)
value <- c(1,2,3,11,12,13,4,5,6,11,12,13)

df <- data.frame(time, species,value)
df$time <- as.factor(df$time)
df$species <- as.factor(df$species)

ggplot(df,aes(x=time, y=value, fill = species)) + 
  theme_bw() + 
  geom_point() + 
  stat_summary(fun.y=mean, position = "dodge") + 
  stat_summary(geom="errorbar", fun.data= mean_cl_boot, width = 0.1, size = 0.2, col = "grey57") + 
  ylab("Fitness") 

2 个答案:

答案 0 :(得分:2)

如果我按照您的要求进行操作,则应该进行一些适当的调整。基本技巧是在每一层中设置aes。我在每个图层中分别设置了color / group,因为否则我将很难获得显示时间在之间而不是 in 时间的路径。

因此,第一个摘要是组之间的路径。第二个是错误栏;正如我上面提到的,它有颜色,而不是填充。您先前已将颜色设置为aes之外,无论您是否将颜色映射到变量,都将误差线设置为灰色。平均点的大小(4)比常规点(2)大。

library(ggplot2)

ggplot(df, aes(x = time, y = value)) +
  stat_summary(aes(group = species), fun.y = mean, geom = "path") +
  stat_summary(aes(color = species), fun.data = mean_cl_boot, geom = "errorbar", width = 0.1) +
  stat_summary(aes(color = species), fun.y = mean, geom = "point", size = 4) +
  geom_point(aes(color = species), size = 2)

reprex package(v0.2.1)于2019-02-21创建

答案 1 :(得分:1)

类似

ggplot(df,aes(x=time, y=value, color = species)) + # Change fill to color
  theme_bw() + 
  geom_point() + 
  stat_summary(fun.y=mean, position = "dodge") + 
  stat_summary(
    geom="errorbar", 
    fun.data= mean_cl_boot, 
    width = 0.1, size = 0.2, col = "grey57") + 
  # Lines by species using grouping
  stat_summary(aes(group = species), geom = "line", fun.y = mean) +
  ylab("Fitness")

如果您需要两个错误栏,可以将行摘要的group添加到ggplot外观中。