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

如何在ggplot2柱状图中显示全部1-67号患者X轴标签?

解决ggplot2柱状图X轴所有标签显示问题

你之前用axis()函数和las参数的方式不对——ggplot2不兼容base R的轴控制函数,而且las=2放在aes()里根本不会生效。要显示所有1-67的患者标签,按以下步骤修改代码:

关键修改点:

  • 移除aes()里的las=2,把标签旋转逻辑放到theme(axis.text.x)中
  • 用scale_x_discrete()强制指定所有X轴刻度显示,避免ggplot自动隐藏部分标签
  • 调整X轴标签边距,防止被图表底部截断

修改后的完整代码:

ggplot(data = V5.ACE2.double.replacement.and.redo.of.AUC.calculation.CSV.file, 
       mapping = aes(x = Patient, y = Fluorescent.sum.over.240.min, fill = Top.20.)) +
  geom_bar(stat = 'identity') +
  # 强制显示所有X轴离散标签
  scale_x_discrete(breaks = unique(V5.ACE2.double.replacement.and.redo.of.AUC.calculation.CSV.file$Patient)) +
  theme(
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    panel.background = element_blank(),
    axis.title.x = element_text(size = 26),
    axis.title.y = element_text(size = 26),
    axis.text.y = element_text(size = 18),
    # 设置X轴标签垂直旋转,添加边距避免截断
    axis.text.x = element_text(size = 18, angle = 90, vjust = 0.5, hjust = 1, margin = margin(t = 10)),
    legend.key.size = unit(1, "in"),
    legend.title = element_text(size = 22),
    legend.text = element_text(size = 17)
  ) +
  labs(x = "\nPatient Sample", y = "\nFluorescence sum over 240 min")

额外注意:

如果你的Patient列是数值类型,建议先转成因子,确保标签按1-67的顺序排列,不会被ggplot当成连续变量处理:

# 先处理数据
V5.ACE2.double.replacement.and.redo.of.AUC.calculation.CSV.file$Patient <- factor(
  V5.ACE2.double.replacement.and.redo.of.AUC.calculation.CSV.file$Patient,
  levels = 1:67
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:41:07