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

如何在ggplot2的geom_bar中自定义轴刻度:月份名与斜体表达式

解决方案

当然可以实现这两个自定义需求,下面是修改后的完整代码以及关键步骤说明:

完整代码

library(tidyverse)

x <- 1:12
z1 <- c("m", "m", "m", "m", "m", "n", "n", "n", "n", "n", "n", "n")
z2 <- c("m", "m", "m", "m", "p", "p", "p", "p", "n", "n", "n", "n")
z3 <- c("m", "m", "m", "p", "p", "p", "n", "n", "n", "n", "n", "n")

df <- data.frame(x, z1, z2, z3)
colors <- c("m" = "#f8766d", "n" = "#00BA38", "p" = "#619CFF")

df_long <- pivot_longer(df, cols = c("z1", "z2", "z3"), names_to = "variable", values_to = "value")
df_long$value <- factor(df_long$value, levels = c("m", "n", "p"))

ggplot(df_long, aes(x = variable, fill = value)) +
  geom_bar(position = position_stack(reverse = TRUE)) +
  # 自定义翻转后的Y轴刻度为斜体表达式
  scale_y_discrete(labels = expression(italic(z(t,1)), italic(z(t,2)), italic(z(t,3)))) +
  # 自定义翻转后的X轴刻度位置与标签
  scale_x_continuous(breaks = c(1, 5, 9), labels = c("Jan", "Feb", "Mar")) +
  # 应用预设的自定义颜色
  scale_fill_manual(values = colors) +
  coord_flip()

关键修改说明

  1. X轴刻度替换
    由于coord_flip()会交换X/Y轴,原堆叠条形的长度轴(计数轴)会变为翻转后的X轴。通过scale_x_continuous()指定刻度位置breaks = c(1,5,9),并对应设置标签labels = c("Jan", "Feb", "Mar")即可完成替换。

  2. Y轴斜体表达式刻度
    翻转后的Y轴对应原数据的variable列(z1/z2/z3),使用scale_y_discrete()配合expression()函数生成斜体数学表达式标签,italic()函数负责实现文本斜体效果,直接编写z(t,1)这类格式就能满足需求。

  3. 补充自定义颜色应用
    你定义的colors向量需要通过scale_fill_manual(values = colors)应用到图表中,才能让不同类别显示预设的颜色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:45:14