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

如何绘制按分组填充颜色的单条ECDF(经验累积分布函数)曲线

解决方法

要实现将所有price数据合并为一条ECDF曲线,仅让点的填充颜色随cut分组变化,需要先手动计算整体数据的ECDF值,再将其与原始数据关联后绘图,避免stat_ecdf自动按分组计算独立ECDF。

具体步骤如下:

  • 对抽样后的diamonds数据,计算所有price的排序及对应的累积概率(ECDF的y值)
  • 用ggplot直接绘制点,x映射为price,y映射为手动计算的ECDF值,fill映射为cut

完整代码:

library(ggplot2)
library(dplyr)

diamonds %>%
  slice_sample(prop = 0.01) %>%
  mutate(
    # 计算所有price的秩,用average处理重复值保证ECDF准确性
    rank = rank(price, ties.method = "average"),
    # 计算整体ECDF的累积概率值
    ecdf_y = rank / n()
  ) %>%
  ggplot(aes(x = price, y = ecdf_y, fill = cut)) +
  geom_point(shape = 21) +
  labs(y = "ECDF")

代码说明

  • rank(price, ties.method = "average"):针对所有price计算秩,重复值取平均秩,避免重复数据导致ECDF出现跳变误差
  • ecdf_y = rank / n():n()代表当前数据的总样本量,计算得到每个点对应的累积概率,这就是整体ECDF的y轴数值
  • 用geom_point替代stat_ecdf,直接使用手动计算的ECDF值,彻底避免分组计算独立曲线的问题

最终绘制的点会按照整体price的ECDF规律排列,每个点的填充颜色由对应的cut分组决定,呈现一条统一的ECDF曲线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:38:11