图例标签组合图(ggplot 和拼凑)

Posted

技术标签:

【中文标题】图例标签组合图(ggplot 和拼凑)【英文标题】:Legend label combined plots (ggplot and patchwork) 【发布时间】:2021-11-17 11:41:44 【问题描述】:

我是 R 新手,并试图找到一种简单的方法来更改使用 ggplot 和拼凑而成的组合箱线图的图例标签。

我正在比较两组(对照组和哮喘组)中 5 种不同类型细胞的比例。我为每种细胞类型创建了箱线图,并将它们与拼凑而成。

plot_mac <-  ggplot(asthma_desc, aes(x=control_case, y=BAL_mac_LP, color=control_case)) + 
  geom_boxplot(width=0.5,lwd=0.5) +
  geom_jitter(width=0.15) +
  labs(y = "Macrophages %") +
  stat_compare_means(label = "p.signif", label.x.npc = "center", label.y = 80, hide.ns = T)

然后我对 4 种不同类型的细胞做同样的事情。

patchwork <- plot_mac + plot_lym + plot_neu + plot_mast + plot_eos + plot_layout(guides = 'collect') 

patchwork & theme_minimal() & scale_color_manual(values=c("black", "red")) & 
  theme(axis.title.x = element_blank(), axis.ticks.x=element_blank(), axis.text.x=element_blank(), text=element_text(size=7)) & 
  ylim(0,100)

我得到以下情节

我想将图例“control_case”更改为“Group”,将“1”更改为“control”,将“2”更改为“case”。我无法使其与 labs()、scale_x_discrete() 或主题一起使用()。

【问题讨论】:

尝试将+ scale_color_discrete(name = "Group", labels = c("1" = "control", "2" = "case")) 添加到您的绘图中。 在这种情况下,我会选择facet_grid 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

另一种选择是向您的数据框中添加一个名为Group 的新列。 这是一个模拟 mtcars 数据集的示例:

library(tidyverse)
library(ggpubr)
library(patchwork)

mtcars1 <- mtcars %>% 
    mutate(Group = case_when( am==0 ~"control", 
                                       am==1~"case",
                                       TRUE ~ NA_character_))
    


p1 <- ggplot(mtcars1, aes(x=Group, y=mpg, color=Group)) + 
    geom_boxplot(width=0.5,lwd=0.5) +
    geom_jitter(width=0.15) +
    labs(y = "Macrophages %") +
    stat_compare_means(label = "p.signif", label.x.npc = "center", label.y = 80, hide.ns = T)

p2 <- ggplot(mtcars1, aes(x=Group, y=wt, color=Group)) + 
    geom_boxplot(width=0.5,lwd=0.5) +
    geom_jitter(width=0.15) +
    labs(y = "Macrophages %") +
    stat_compare_means(label = "p.signif", label.x.npc = "center", label.y = 80, hide.ns = T)

p3 <- ggplot(mtcars1, aes(x=Group, y=hp, color=Group)) + 
    geom_boxplot(width=0.5,lwd=0.5) +
    geom_jitter(width=0.15) +
    labs(y = "Macrophages %") +
    stat_compare_means(label = "p.signif", label.x.npc = "center", label.y = 80, hide.ns = T)

patchwork <- p1 + p2 + p3 + plot_layout(guides = 'collect') 


patchwork & theme_minimal() & scale_color_manual(values=c("black", "red")) & 
    theme(axis.title.x = element_blank(), axis.ticks.x=element_blank(), axis.text.x=element_blank(), text=element_text(size=7)) & 
    ylim(0,100)

【讨论】:

以上是关于图例标签组合图(ggplot 和拼凑)的主要内容,如果未能解决你的问题,请参考以下文章

将图例添加到组合的线和条形图 ggplot

R语言ggplot2可视化为组合图添加综合图例实战:使用ggpubr包ggarrange函数实现综合图例使用patchwork包实现综合图例

将多图 ggplots 与拼凑和单个图例对齐

为线条/形状组合正确显示 ggplot 图例

R语言可视化及作图7--ggplot2之标签、图例和标题绘制

在 R 中使用 ggplot 和拼凑更改轴标签和比例