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

如何在ggplot2中设置X轴标签、数值标签及其他轴标签为粗体

ggplot2柱状图标签粗体设置解决方案

问题根源

你代码里最后单独写的element_text(face="bold")是无效的——ggplot2的主题样式必须嵌套在theme()函数内部才能生效,而且柱子上方的数值标签(geom_text生成的)需要单独设置粗体,不属于theme控制范围。

修正后的完整可运行代码

(补充了模拟数据,基于iris数据集生成符合你代码结构的df,确保代码能直接运行)

library(ggplot2)
library(reshape2)

# 生成模拟数据(替换你实际的df)
df <- aggregate(. ~ Species, data = iris, FUN = mean)
colnames(df)[1] <- "Group.1"

md.df = melt(df, id.vars = c('Group.1'))
tmp = c("virginica","setosa","versicolor")
md.df2 = md.df[order(match(md.df$Group.1, tmp)),]
md.df2$Group.1 = factor(as.character(md.df2$Group.1), levels = unique(md.df2$Group.1))

ggplot(md.df2, aes(x = Group.1, y = value, group = variable, fill = variable)) +
  geom_bar(stat="identity", color='black', position = "dodge") +
  xlab('Species') + ylab('Values') + 
  theme_bw()+
  ylim(0,8)+
  theme(
    text = element_text(size=16),
    # 设置轴标题粗体(X/Y轴的名称)
    axis.title = element_text(face="bold"),
    # 设置轴刻度文本粗体(X轴物种标签、Y轴数值刻度)
    axis.text.x = element_text(angle=0, hjust=.5, face="bold"),
    axis.text.y = element_text(face="bold"),
    plot.title = element_text(hjust = 0.5, face="bold"), # 标题也设粗体(可选)
    plot.subtitle = element_text(hjust = 0.5)
  )+
  ggtitle("Order variables in barplot")+
  # 设置柱子上方数值标签粗体
  geom_text(aes(label=value), vjust=-0.3, size=4, 
            position = position_dodge(0.9), fontface="bold")

关键修改点

  1. 移除无效代码:删掉原代码末尾单独的element_text(face="bold")
  2. 轴标题粗体:在theme()中添加axis.title = element_text(face="bold"),也可以单独设置axis.title.x/axis.title.y
  3. 轴刻度文本粗体:在axis.text.x/axis.text.y的element_text里加入face="bold"参数
  4. 数值标签粗体:在geom_text()中直接添加fontface="bold"参数,这是控制柱子上方文本样式的专属参数

额外优化建议

如果保存后仍有模糊,建议直接用ggsave()保存为矢量格式(如.pdf),矢量图放大不会失真,比高分辨率位图更适合科研排版:

ggsave("barplot_bold.pdf", plot = last_plot(), width = 8, height = 6, device = "pdf")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:55:19