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

为何ATAC-seq峰Z-score小提琴图部分呈波浪状?求验证及建议

问题描述

我在绘制不同时间点ATAC-seq峰(Z-score)的小提琴图时,发现部分图(A)呈现明显波浪状,另一部分图(B)则无此特征。我推测这是因为A组峰数量较多(28,258个)影响了核密度估计,而B组峰数量较少(6,438个)。想请教:

  1. 这个推测是否正确?
  2. 是否需要对A组图进行修正?

使用的代码如下:

C12[,22:27] %>%
  gather(key = "Stage", value = "val") %>%
  ggplot(aes (x = Stage, y = val, fill = Stage)) +
  scale_fill_viridis_d()+
  geom_hline(yintercept = c(0), linetype = 2) +
  geom_violin()+
  theme(axis.text.x = element_blank())+
  ggtitle("Cluster 12")+
  ylab("Z-score")

附:

  • A(波浪状小提琴图)A: 波浪状小提琴图
  • B(平滑小提琴图)B: 平滑小提琴图
解答

你的推测基本正确,小提琴图的波浪状外观确实和数据量(峰数量)直接相关:

  • 当数据量极大时,geom_violin()默认的核密度估计带宽会过小,导致密度曲线过度捕捉数据中的微小波动,形成波浪状。小样本量下,默认带宽相对宽松,曲线会自然平滑。

是否需要修正取决于你的使用场景:

  • 若仅用于探索性分析,波浪状能反映数据的真实分布细节,无需修正;
  • 若用于论文发表或汇报展示,过度波动的曲线会降低可读性,建议通过以下方式优化:
    • 调整带宽:在geom_violin()中添加adjust参数(如geom_violin(adjust = 1.5)),数值越大曲线越平滑,可根据实际效果调整;
    • 手动设置分箱:使用geom_violin(binwidth = 0.2)指定分箱宽度,过滤部分噪声;
    • 切换绘图组合:如果更关注分布趋势,可改用箱线图搭配散点/蜂群图,兼顾细节与可读性。

调整带宽的代码示例:

C12[,22:27] %>%
  gather(key = "Stage", value = "val") %>%
  ggplot(aes (x = Stage, y = val, fill = Stage)) +
  scale_fill_viridis_d()+
  geom_hline(yintercept = c(0), linetype = 2) +
  geom_violin(adjust = 1.8)+  # 调整adjust值优化平滑度
  theme(axis.text.x = element_blank())+
  ggtitle("Cluster 12")+
  ylab("Z-score")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:55:17