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

R语言ggplot绘制堆叠百分比面积图仅显线条无填充问题咨询

问题根源

你代码出不了堆叠填充面积效果,核心是两个问题:

  1. 数据构造逻辑错误:仅提取了美国rstar的方差分解值,剩余6个经济体的百分比数据没有正确写入数据集,每个时间点仅单个分组有有效值,无法形成堆叠
  2. 未显式指定面积图层的位置参数,且分组未做因子固定,容易出现填充顺序错乱、断裂成线的问题
可直接运行的修正代码
library(ggplot2)

# 1. 正确提取所有经济体的FEVD值,转为百分比格式
fevd_df <- variance.decomposition[, c("rstarUS","rstarUK","rstarJAP","rstarGER","rstarFRA","rstarITA","rstarCA")] * 100

# 2. 构造符合ggplot要求的长格式数据集
plot_df <- data.frame(
  time = rep(1:50, 7),
  rstar = factor(
    rep(c("rstarUS","rstarUK","rstarJAP","rstarGER","rstarFRA","rstarITA","rstarCA"), each = 50),
    levels = c("rstarUS","rstarUK","rstarJAP","rstarGER","rstarFRA","rstarITA","rstarCA")
  ),
  percent = as.vector(as.matrix(fevd_df))
)

# 3. 绘制标准百分比堆叠面积图
plot.us <- ggplot(plot_df, aes(x = time, y = percent, fill = rstar)) +
  geom_area(position = "stack", alpha = 0.85) +
  scale_y_continuous(limits = c(0, 100), expand = c(0, 0)) +
  labs(x = "预测期数", y = "方差解释占比(%)", fill = "rstar来源") +
  theme_minimal()

plot.us
注意事项
  • 不要用cbind()拼接字符串向量,直接用c()即可,cbind()生成的矩阵对象容易带来类型转换错误
  • 绘制堆叠类ggplot图形必须使用长表数据:每个x轴刻度对应每个填充分组的唯一一条y值记录,宽表直接传入会导致分组识别失败
  • 若运行后仍出现线条断裂无填充,优先检查数据集是否存在百分比负值、缺失值,这两类值会直接导致面积填充中断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:54:29