R语言ggarrange绘图:坐标轴与图例文字大小配置问题
解决ggarrange多环形图的图例大小与轴文本问题
1. 先确保单个环形图的轴文本可见
环形图(如ggplot绘制的甜甜圈图)默认会隐藏X/Y轴元素,要在单个图的代码里显式开启并设置样式,避免后续合并时失效:
# 定义生成单个环形图的函数 make_donut_plot <- function(data_subset) { ggplot(data_subset, aes(x = 2, fill = carrier)) + geom_bar(width = 1, stat = "count") + coord_polar("y", start = 0) + xlim(0.5, 2.5) + # 控制环形的内外半径 # 显式设置轴元素与图例样式 theme( axis.text.x = element_text(size = 12, color = "black"), # X轴标签大小 axis.text.y = element_text(size = 12, color = "black"), # Y轴标签大小 axis.title.x = element_text(size = 14, face = "bold"), # X轴标题 axis.title.y = element_text(size = 14, face = "bold"), # Y轴标题 legend.text = element_text(size = 12) # 单图图例文字大小 ) + labs(x = "航班类型", y = "数量") # 替换为你的轴标题内容 }
2. 合并时统一控制图例与全局样式
ggarrange的common.legend会提取并合并所有子图的图例,此时单独子图的图例设置可能被覆盖,需要在合并后统一调整全局主题:
# 循环生成对应origin值的子图列表 origin_values <- unique(your_data$origin) plot_list <- lapply(origin_values, function(val) { subset_data <- your_data[your_data$origin == val, ] make_donut_plot(subset_data) + labs(title = paste("出发地:", val)) }) # 合并子图,启用共同图例 combined_plot <- ggarrange( plotlist = plot_list, common.legend = TRUE, legend = "bottom", # 可选:top/right/left ncol = 2, nrow = ceiling(length(plot_list)/2) # 自适应布局 ) # 给合并后的图统一设置图例大小 combined_plot <- combined_plot + theme( legend.text = element_text(size = 14), # 增大图例文字 legend.title = element_text(size = 16, face = "bold") # 图例标题样式 ) # 若需要全局统一的轴标题,用annotate_figure添加 annotate_figure(combined_plot, bottom = text_grob("全局X轴标题", size = 14, face = "bold"), left = text_grob("全局Y轴标题", size = 14, face = "bold", rot = 90) )
3. 关键排查点
- 不要在子图中设置
legend.position = "none",否则ggarrange无法提取共同图例。 - 环形图的
coord_polar会改变轴的显示逻辑:X轴对应环形的分段标签,Y轴对应半径方向的刻度,若需要传统XY轴的视觉效果,可考虑调整可视化类型,或用annotate()手动添加文本到指定坐标。 - 如果使用
theme_pubr()统一风格,需在子图或合并后的图中叠加主题设置,避免默认样式覆盖自定义配置。
内容的提问来源于stack exchange,提问作者Gerald Vasquez Aleman
相关产品推荐
相关产品推荐

