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

如何使用ggplot2为x轴刻度标签添加包含数据框信息的长文本

R ggplot2 x轴刻度添加自定义文本解决方案

你可以通过自定义scale_x_discrete()的标签参数实现需求,以下是两种常用实现方案:

基础方案(无需额外依赖包)

直接构造带换行的文本标签传入刻度配置即可:

library(ggplot2)

# 构造自定义x轴刻度标签,换行符\n实现多行显示
x_labels <- paste0(df$year, "\n(注册人数:", df$inscripciones, ")")

p <- ggplot(data = df, aes(x = year, y = tasa)) +
  geom_bar(width = 0.4, stat = "identity", fill="orange")+
  geom_text(aes(year, tasa + 5, label = round(tasa,2), fill = NULL), size=4)+
  labs(x = NULL, y = NULL)+
  scale_y_continuous(breaks = seq(0, 110, by = 10))+
  # 传入自定义刻度标签
  scale_x_discrete(labels = x_labels)+
  theme_bw() +
  # 调整x轴文本边距和对齐,避免内容被截断
  theme(axis.text.x = element_text(vjust = 1, margin = margin(t = 5)))

p

进阶样式方案(支持富文本渲染)

如果需要给刻度文本添加加粗、变色等样式,可配合ggtext包实现:

# 首次使用请先安装
# install.packages("ggtext")
library(ggtext)
library(ggplot2)

# 构造支持Markdown/HTML语法的自定义标签
x_labels_md <- paste0("**", df$year, "**<br><span style='color:#666;'>注册人数:", df$inscripciones, "</span>")

p <- ggplot(data = df, aes(x = year, y = tasa)) +
  geom_bar(width = 0.4, stat = "identity", fill="orange")+
  geom_text(aes(year, tasa + 5, label = round(tasa,2), fill = NULL), size=4)+
  labs(x = NULL, y = NULL)+
  scale_y_continuous(breaks = seq(0, 110, by = 10))+
  scale_x_discrete(labels = x_labels_md)+
  theme_bw() +
  # 用element_markdown渲染富文本标签
  theme(axis.text.x = element_markdown(vjust = 1, margin = margin(t = 5)))

p

你可以根据需要调整标签拼接逻辑,匹配你要的显示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:39:04