【问题标题】:How to create unique legend/color label for multiple variables and plots in ggplot如何在 ggplot 中为多个变量和绘图创建唯一的图例/颜色标签
【发布时间】:2021-06-14 21:24:33
【问题描述】:

我正在尝试创建一个多图页面,以便随着时间的推移比较疾病变量和患者状态(即死亡或康复)中的多个变量。

这是我的代码

p1 <- g + geom_smooth(data = sofa_vivo_vs_mortos, aes(x = days, y = sofa_score, color = outcome, group = outcome)) + scale_x_continuous(breaks = sofa_vivo_vs_mortos$days) 

+ geom_smooth(data = sofa_vivo_vs_mortos, aes(x = days, y = resp_score, color = outcome, group = outcome)) + values = c("blue", "red")) + labs(x="Days after admission")

p2 <- g + geom_smooth(data = sofa_vivo_vs_mortos, aes(x = days, y = sofa_score, color = outcome, group = outcome)) + scale_x_continuous(breaks = sofa_vivo_vs_mortos$days) 

+ geom_smooth(data = sofa_vivo_vs_mortos, aes(x = days, y = coag_score, color = outcome, group = outcome)) + labs(x="Days after admission")

ggarrange(p1, p2, labels = c("A", "B"), ncol = 2)

这会产生以下情节:

由于无法区分图中的哪个变量,我希望我的代码产生:

1-整个页面的唯一图例位置

2-每个变量的颜色图例不仅基于它的分组变量(在我的代码中,outcome 变量),还基于变量本身的名称(即sofa_score 变量的一种颜色+图例其中outcome = deceased 和另一个sofa_score 其中outcome = recovered,与分析中的第二个变量组合在同一图中(即变量resp_score 具有相同的outcome 分层)

类似的期望结果:

编辑样本数据:

df2 <- data.frame(ID = seq(1,32, by=1), sofa_score = sample(1:8, 8, replace = TRUE),  resp_score = sample(1:8, 8, replace = TRUE), 
outcome = c('deceased', 'recovered'), 
days = sample(1:20, 32, replace = TRUE), coag_score = sample(1:8, 8, replace = TRUE))

【问题讨论】:

  • 您能否生成一些与您的真实数据具有相同变量名称和向量类的虚拟数据供我们使用?
  • 感谢您的回答。肯定的事。我刚刚用它编辑了帖子,这里是:df2 &lt;- data.frame(ID = seq(1,32, by=1), sofa_score = sample(1:8, 8, replace = TRUE), resp_score = sample(1:8, 8, replace = TRUE), outcome = c('deceased', 'recovered'), days = sample(1:20, 32, replace = TRUE), coag_score = sample(1:8, 8, replace = TRUE))

标签: r ggplot2 plot data-visualization


【解决方案1】:

我通常发现拼凑包非常适合情节组合,包括从多个情节中收集图例。一个例子:

library(ggplot2)
library(patchwork)

set.seed(42)

df2 <- data.frame(
  ID = seq(1,32, by=1), 
  sofa_score = sample(1:8, 8, replace = TRUE),  
  resp_score = sample(1:8, 8, replace = TRUE), 
  outcome = c('deceased', 'recovered'), 
  days = sample(1:20, 32, replace = TRUE), 
  coag_score = sample(1:8, 8, replace = TRUE)
)

p1 <- ggplot(df2, aes(days)) +
  geom_smooth(aes(y = coag_score, colour = outcome, group = outcome)) +
  scale_colour_manual(
    values = c("tomato", "dodgerblue"),
    name = "Coag Score"
  )

p2 <- ggplot(df2, aes(days)) +
  geom_smooth(aes(y = resp_score, colour = outcome, group = outcome)) +
  scale_colour_manual(
    values = c("limegreen", "orchid"),
    name = "Resp Score"
  )

p1 + p2 + plot_layout(guides = "collect")
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'

reprex package (v0.3.0) 于 2021-03-17 创建

【讨论】:

  • 感谢您的快速回复。我正在寻找它的确切情节,您可以在其中将CoagResp Score 情节合并为一个,每条线都有不同的颜色,因为我想比较两个不同状态的两个变量,即4条不同的线.
猜你喜欢
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多