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

如何将R脊线图转为垂直脊线图?解决width与stat参数报错

解决geom_vridgeline绘制垂直脊线图的报错问题

报错原因

你设置了stat="identity",这个参数会让ggplot直接使用原始数据,不执行任何统计计算,因此..density..这个统计变量根本不存在,这就是报错的核心原因。而且你的数据框里已经通过density()函数计算出了密度值,存在pdf列中,完全不需要调用统计生成的..density..。

修正后的代码

# 修正后的垂直脊线图代码
p <- ggplot(df, aes(x = id, y = x, width = pdf, group = interaction(name, id), fill = name)) +
  geom_vridgeline(stat = "identity", trim = FALSE, alpha = 0.85, scale = 2) +
  scale_x_continuous(limits = c(-1, 3)) +  # 适配分组的x轴范围
  scale_y_continuous(limits = c(-6, 6))
p

关键调整点

  • 把width = ..density..替换为width = pdf,直接使用数据中已有的密度值
  • 添加group = interaction(name, id),确保每个name和id的组合都能生成独立的垂直脊线
  • 调整fill映射为name,和你原来的标准脊线图保持一致(如果需要按id填充可自行修改)
  • 调整x轴范围,让脊线显示更合理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:05:40