R语言ggplot中如何让图例标题的单位换行并左对齐?
解决ggplot图例标题多行左对齐问题
要实现图例标题“log FMRₘ”与单位分两行且左对齐,这里提供两种实用方案:
方法一:使用ggtext包(推荐,灵活易控)
- 先安装并加载ggtext包:
install.packages("ggtext") library(ggtext)
- 修改ggplot代码,用markdown语法编写图例标题(
<br>实现换行),并在主题中启用markdown渲染、设置左对齐:
ggplot(data = cf_joint2, aes(j_df.d13C_VPDB, j_df.d15N_Air)) + geom_point(aes(shape= groupmass, color = j_df.log_mass_scaled), size= 1.5) + labs(x = expression(paste(delta^{13}, "C (‰)")), y = expression(paste(delta^{15}, "N (‰)")), colour = "log FMRₘ<br>(mg O₂ kg⁻¹ hr⁻¹)", shape = "log Mass (kg)") + theme( text = element_text(size=15), legend.title = element_markdown(hjust = 0) ) + scale_colour_viridis_c()+ scale_shape_manual(values=c(16,17,15,18))+ stat_ellipse(level=0.99) + facet_wrap(~factor(j_df.Common_name))
方法二:原生语法结合主题调整(无需额外包)
如果不想安装新包,可通过atop实现换行,再在主题中强制左对齐:
ggplot(data = cf_joint2, aes(j_df.d13C_VPDB, j_df.d15N_Air)) + geom_point(aes(shape= groupmass, color = j_df.log_mass_scaled), size= 1.5) + labs(x = expression(paste(delta^{13}, "C (‰)")), y = expression(paste(delta^{15}, "N (‰)")), colour = expression(atop("log FMR"[m], "(mg"~O[2]~kg^-1~hr^-1*")")), shape = "log Mass (kg)") + theme( text = element_text(size=15), legend.title = element_text(hjust = 0) ) + scale_colour_viridis_c()+ scale_shape_manual(values=c(16,17,15,18))+ stat_ellipse(level=0.99) + facet_wrap(~factor(j_df.Common_name))
你之前用atop未实现左对齐,核心是缺少theme中legend.title的hjust=0设置,添加后即可让两行文本统一左对齐。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

