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

如何在R语言barplot的names.arg中实现多行及不同字号标签?

在R中实现带换行小号字体标签和条形计数的条形图

当然可以!用ggplot2就能轻松搞定这个需求,我给你两种实用方案,你可以根据自己的偏好选择:

方法一:使用ggtext包(推荐,更直观灵活)

ggtext包支持在ggplot2中解析markdown格式的文本,这样我们可以直接用<br>换行,用<small>标签设置小号字体,非常方便。

首先准备示例数据(你可以替换成自己的counts数据):

# 准备示例数据
counts <- data.frame(
  name = c("A", "B", "C"),
  value = c(25, 40, 35),
  n = c(123, 156, 98)  # 每个类别的样本量N
)

然后安装并加载ggtext,绘制图形:

# 如果没安装ggtext,先运行这行:install.packages("ggtext")
library(ggplot2)
library(ggtext)

# 构造带markdown格式的x轴标签:名称换行+小号N=xxx
counts$x_label <- paste0(counts$name, "<br><small>N=", counts$n, "</small>")

# 绘制条形图
ggplot(counts, aes(x = name, y = value)) +
  geom_bar(stat = "identity", fill = "#2c3e50") +
  # 在条形上方添加小号计数文本
  geom_text(aes(label = value), vjust = -0.5, size = 3, color = "#34495e") +
  # 设置x轴标签为我们构造的markdown文本
  scale_x_discrete(labels = counts$x_label) +
  # 让x轴文本解析markdown格式
  theme(
    axis.text.x = element_markdown(size = 10),  # 主标签字体大小,<small>会自动缩小
    plot.title = element_text(hjust = 0.5, size = 14)
  ) +
  labs(title = "带换行小号标签和计数的条形图", x = "", y = "数值")

这个方法的好处是格式调整非常灵活,你还可以给小号文本加斜体、改变颜色等,只要用markdown语法就行。

方法二:不依赖额外包,用ggplot2原生表达式

如果你不想安装额外包,可以用ggplot2支持的表达式语法,通过atop()实现换行,scriptstyle()设置小号字体:

library(ggplot2)

# 构造表达式形式的x轴标签
counts$x_expr <- lapply(1:nrow(counts), function(i) {
  # atop实现上下两行,scriptstyle让第二行变小号
  bquote(atop(.(counts$name[i]), scriptstyle("N=" ~ .(counts$n[i]))))
})

# 绘制条形图
ggplot(counts, aes(x = name, y = value)) +
  geom_bar(stat = "identity", fill = "#2c3e50") +
  # 添加小号计数文本
  geom_text(aes(label = value), vjust = -0.5, size = 3, color = "#34495e") +
  # 设置x轴标签为表达式
  scale_x_discrete(labels = counts$x_expr) +
  theme(
    axis.text.x = element_text(size = 10),
    plot.title = element_text(hjust = 0.5, size = 14)
  ) +
  labs(title = "用表达式实现的带换行标签条形图", x = "", y = "数值")

这里用bquote()把变量插入到表达式中,scriptstyle()会自动把文本缩小到小号字体,效果和第一种方法类似,只是格式调整的灵活性稍弱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:15:33