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

如何用ggplot2绘制符合要求的四分位数堆叠柱状图?

解决ggplot2复刻四分位数分类堆叠柱状图的问题

核心思路:用geom_col替代默认geom_bar,先做好数据分组预处理

1. 第一步:对原始数据做四分位数分组统计

先把收益率/利差数据按四分位数拆分,计算你需要展示的指标(比如分组占比、区间范围):

library(dplyr)
library(ggplot2)

# 假设原始数据为df,包含return(收益率/利差)列,若有分类变量比如asset(资产类别)可保留
df_processed <- df %>%
  # 生成四分位数分组标签(1-4分位,可自定义标签)
  mutate(Quartile = factor(ntile(return, 4), labels = c("Q1", "Q2", "Q3", "Q4"))) %>%
  # 按分类变量+四分位分组统计
  group_by(asset, Quartile) %>%
  # 计算每个分组的观测占比(可替换为区间长度等你需要的指标)
  summarize(Percent = n() / nrow(df) * 100, .groups = "drop")

2. 第二步:用geom_col绘制堆叠柱状图

geom_col会直接使用你指定的y轴数值,不会像默认geom_bar那样自动求和,完美匹配堆叠需求:

ggplot(df_processed, aes(x = asset, y = Percent, fill = Quartile)) +
  geom_col(position = "stack") +  # position="stack"是默认堆叠模式,可省略
  labs(title = "不同资产收益率四分位占比堆叠图",
       x = "资产类别",
       y = "占比(%)",
       fill = "四分位数") +
  theme_minimal()

3. 若需展示四分位区间范围的堆叠图

如果你的需求是展示每个四分位的数值区间(比如Q1的最小值到25分位值),可以先计算区间上下限和长度,再堆叠:

# 计算四分位区间统计量
df_range <- df %>%
  summarize(
    q0 = quantile(return, 0),
    q25 = quantile(return, 0.25),
    q50 = quantile(return, 0.5),
    q75 = quantile(return, 0.75),
    q100 = quantile(return, 1)
  ) %>%
  tidyr::pivot_longer(cols = everything(), names_to = "quantile", values_to = "value") %>%
  mutate(
    Quartile = factor(c("Q1", "Q1", "Q2", "Q3", "Q4"), labels = c("Q1", "Q2", "Q3", "Q4")),
    range = value - lag(value, default = first(value))
  ) %>%
  filter(!is.na(range))

# 绘制区间堆叠图
ggplot(df_range, aes(x = "收益率区间", y = range, fill = Quartile)) +
  geom_col(position = "stack") +
  geom_text(aes(y = cumsum(range) - range/2, label = paste0(lag(value), "~", value)), color = "white") +
  labs(title = "收益率四分位区间堆叠图",
       y = "区间长度",
       fill = "四分位数") +
  theme_minimal()

关于geom_boxplot的补充

如果只是想展示四分位分布,而非堆叠柱状图,按四分位填充颜色很简单,直接映射fill参数即可:

ggplot(df, aes(x = factor(1), y = return, fill = factor(ntile(return, 4)))) +
  geom_boxplot(position = "dodge") +
  labs(fill = "四分位数")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:40:24