You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言ggplot中如何让图例标题的单位换行并左对齐?

解决ggplot图例标题多行左对齐问题

要实现图例标题“log FMRₘ”与单位分两行且左对齐,这里提供两种实用方案:

方法一:使用ggtext包(推荐,灵活易控)

  1. 先安装并加载ggtext包:
install.packages("ggtext")
library(ggtext)
  1. 修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:22:23