【问题标题】:R: Plotting one ECDF on top of another in different colorsR:以不同颜色将一个 ECDF 绘制在另一个之上
【发布时间】:2011-06-14 13:17:36
【问题描述】:

我有几个累积经验密度函数,我想将它们绘制在彼此之上,以说明两条曲线的差异。正如in a previous question 所指出的那样,绘制ECDF 的函数就是plot(Ecdf()) 当我阅读了精美的手册页时,我确定我可以使用以下内容将多个ECDF 绘制在彼此之上:

require( Hmisc )
set.seed(3)
g <- c(rep(1, 20), rep(2, 20))  
Ecdf(c( rnorm(20), rnorm(20)), group=g)

但是我的曲线有时会有些重叠,很难分辨哪个是哪个,就像上面生成此图的示例一样:

我真的很想让这两个 CDF 的颜色不同。但是,我不知道该怎么做。有什么建议吗?

【问题讨论】:

  • 是时候从吉尼斯转回咖啡了,JD。有一个col= 参数,请参阅我编辑的答案。

标签: r plot ecdf


【解决方案1】:

如果没记错的话,我过去曾这样做过。我记得,你需要欺骗它,因为Ecdf() 参数化得非常糟糕。我认为在help(ecdf) 中暗示它只是一个阶梯函数图,因此您可以估计两个或多个 ecdf,绘制一个然后通过lines() 进行注释。

编辑原来如此简单

  R> Ecdf(c(rnorm(20), rnorm(20)), group=g, col=c('blue', 'orange'))

因为帮助页面清楚地说明了col= 参数。但我也发现了一些我明确使用plot.stepfun() 的脚本。

【讨论】:

  • 手册中有明确说明,我以为我读过。显然我的吉尼斯杯挡住了屏幕的那部分。
  • 哇,他们现在做 64 盎司的“大口”眼镜?
  • 当我降落在 DUB 时,他们把我挂在了一个 IV 袋的 Guinness 上。是输液袋挡住了我的屏幕。
【解决方案2】:

您可以一次添加一条曲线(每条曲线都有自己的样式),例如

Ecdf(rnorm(20), lwd = 2)
Ecdf(rnorm(20),add = TRUE, col = 'red', lty = 1)

【讨论】:

  • col, lty, ... 都是矢量化的,你也可以做一个操作。
【解决方案3】:

不使用Ecdf(看起来Hmisc 不可用):

set.seed(3)
mat <- cbind(rnorm(20), rnorm(20))
matplot(apply(mat, 2, sort), seq(20)/20, type='s')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2020-06-06
    • 2020-03-31
    • 2016-07-27
    • 2012-02-26
    相关资源
    最近更新 更多