【问题标题】:如何在R中的箱形图中连接点的连接线中添加组
【发布时间】:2022-01-22 05:56:35
【问题描述】:

我做了以下数据集:

before <- c(100, 120, 140, 130, 120, 100, 100)  
after <- c(140, 100, 160, 120, 90, 70, 70)  
pain_group <- c(1, 0, 1, 0, 0, 0, 0)  
d <- data.frame(before=before, after=after, pain_group=pain_group)

d$id <- 1:nrow(d)
d <- tidyr::gather(d, Measurement, quantity, -id)

我已经用单独的点和连接线将数据绘制在箱线图中:

ggplot(d2, aes(Measurement, quantity_cluster2)) + 
  geom_boxplot() +  
  geom_point() +
  geom_line(aes(group = id), color = 'grey') +
  scale_x_discrete(limits = c('before', 'after'))

但是我希望pain_group 用不同的颜色线(和点)分隔。我怎样才能做到这一点?

提前致谢!

【问题讨论】:

  • 你能让这个可重现,以便代码可以按原样运行吗? (例如,您引用 d2 和一个名为 quantity_cluster2 的变量)
  • color = factor(pain_group) 放入您的aes()。从geom_line 层中删除color = 'grey'

标签: r ggplot2 data-visualization boxplot


【解决方案1】:

不是对您问题的直接回答,而是对(可能)更引人注目的可视化的建议。您正在处理成对的数据,因此将其分为两个维度。散点图非常适合此目的。您的数据已经是正确的形状,您可以添加一条等号线以使比较更容易。

library(ggplot2)
before <- c(100, 120, 140, 130, 120, 100, 100)  
after <- c(140, 100, 160, 120, 90, 70, 70)  
pain_group <- c(1, 0, 1, 0, 0, 0, 0)  
d <- data.frame(before=before, after=after, pain_group=pain_group)

lims <- range(c(before, after))

ggplot(d) +
  geom_point(aes(before, after, color = as.character(pain_group))) +
  geom_abline(intercept = 0, slope = 1) +
  coord_cartesian(xlim = lims, ylim = lims)

reprex package (v2.0.1) 于 2021-12-20 创建

【讨论】:

    【解决方案2】:

    您需要从您的gather 中排除pain_group,因此它仍然是长格式数据中的一列,然后将color = factor(pain_group) 添加到aes()

    d2 <- tidyr::gather(d, Measurement, quantity, -id, -pain_group)
    
    ggplot(d2, aes(Measurement, quantity)) + 
      geom_boxplot() +  
      geom_point(aes(color = factor(pain_group))) +
      geom_line(aes(group = id, color = factor(pain_group))) +
      scale_x_discrete(limits = c('before', 'after'))
    

    您可以使用labs() 自定义图例标题,或者使用scale_color_continuous() 自定义图例标题、标签和颜色。

    【讨论】:

      猜你喜欢
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      相关资源
      最近更新 更多