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

如何在ggplot2图表右侧添加第二个标题?是否有更简便方法?

在ggplot2中添加右侧自定义样式第二个标题的简便方法

问题背景

需要为ggplot2图表添加第二个标题,置于右侧且支持修改颜色、字体等样式。尝试使用annotate函数实现时,受panel范围限制不够便捷,希望找到更直接的实现方式。

现有尝试代码:

library(tidyverse)

ggplot(mtcars, aes(wt, mpg)) + 
  geom_point()+ 
  ggtitle('left')+
  annotate("text", label="right", 
           x=Inf, y=Inf, vjust=1, hjust=1)

解决方案

方法1:关闭坐标裁剪优化annotate

默认ggplot2会裁剪panel外的元素,关闭裁剪后,annotate可直接定位到绘图区域右上角,且支持自定义样式:

library(tidyverse)

ggplot(mtcars, aes(wt, mpg)) + 
  geom_point() + 
  ggtitle('左侧标题') +
  # 自定义右侧标题的颜色、大小、位置
  annotate("text", label = "右侧标题", 
           x = Inf, y = Inf, vjust = 1.2, hjust = 1.1,
           color = "red", size = 4, fontface = "bold") +
  # 关闭坐标裁剪,显示panel外元素
  coord_cartesian(clip = "off") +
  # 调整顶部右侧边距,避免标题被截断
  theme(plot.margin = margin(t = 25, r = 25, b = 10, l = 10))

方法2:用ggtext实现富文本左右标题

借助ggtext的markdown支持,直接在主标题中实现同一行左右对齐的双标题,样式自定义更灵活:

library(tidyverse)
library(ggtext)

ggplot(mtcars, aes(wt, mpg)) + 
  geom_point() + 
  labs(title = '<span style="float:left;">左侧标题</span><span style="float:right; color:blue; font-weight:bold;">右侧标题</span>') +
  theme(
    plot.title = element_markdown(size = 12, margin = margin(t = 10, b = 10)),
    plot.title.position = "plot" # 让标题宽度覆盖整个绘图区域
  )

方法3:通过主题tag添加右侧标题

利用ggplot2的tag元素,直接在主题中设置右侧标题的位置和样式,完全脱离panel限制:

library(tidyverse)

ggplot(mtcars, aes(wt, mpg)) + 
  geom_point() + 
  ggtitle('左侧标题') +
  labs(tag = "右侧标题") +
  theme(
    plot.margin = margin(t = 25, r = 25, b = 10, l = 10),
    plot.title = element_text(hjust = 0), # 左侧标题左对齐
    plot.tag = element_text(color = "green", size = 4, fontface = "italic"),
    plot.tag.position = c(1, 1) # 定位到右上角
  )

内容的提问来源于stack exchange,提问作者Breeze

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:57:01