使用cowplot的plot_grid绘制箱线图时标签无法识别问题求助
问题原因与解决方案
1. label_size参数不生效的原因
plot_grid的label_size参数仅作用于自动生成的子图标签,你当前的代码没有传入labels参数指定子图标签内容,因此该参数不会生效。
2. 特征标签过小、行高不足的原因
你共需要展示57个分类特征,在默认绘图高度下,分类轴的文本会被压缩到极小尺寸,属于ggplot的轴样式配置和出图尺寸问题,和plot_grid无关。
修正后代码
library(cowplot) library(tidyverse) # 先单独生成两张图,方便统一修改配置,避免重复代码 plot_raw <- sample_data1 %>% pivot_longer(-c(ID, outcome), names_to = "feature") %>% # 若特征顺序不符合预期,可新增下行指定特征的排序规则,替换为你实际的特征命名规则即可 # mutate(feature = factor(feature, levels = paste0("特征前缀", 1:57))) %>% ggplot(aes(x = feature, y = value, fill = outcome)) + geom_boxplot() + coord_flip() + labs(title = "未归一化特征") + theme( legend.position="top", # 调整翻转后特征轴的文本大小,可按需调整数值 axis.text.y = element_text(size = 8) ) plot_norm <- sample_data1.norm %>% pivot_longer(-c(ID, outcome), names_to = "feature") %>% # 同上,若需要可补充特征排序代码 ggplot(aes(x = feature, y = value, fill = outcome)) + geom_boxplot() + coord_flip() + labs(title = "归一化特征") + theme( legend.position="top", axis.text.y = element_text(size = 8) ) # 调用plot_grid,添加labels参数后label_size才会生效 plot_grid( plot_raw, plot_norm, labels = c("A", "B"), label_size = 12 ) # 导出时设置足够的高度,确保57个特征有充足的展示空间,可按需调整height数值 ggsave("feature_boxplot.png", width = 15, height = 20, dpi = 300)
额外调整建议
如果还是觉得行间距太小,可在导出时进一步增大height参数的数值,画布高度越大,每个特征的展示空间越充足,文本也会更清晰。
内容的提问来源于stack exchange,提问作者Str1atum
相关产品推荐
相关产品推荐

