在不同颜色下将一个ECDF图绘制在另一个上方

9

我有几个累积经验密度函数,我希望将它们叠加在一起绘制,以便说明两条曲线之间的差异。正如之前的问题中所指出的那样,绘制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)

然而,我的曲线有时会有重叠部分,很难分辨哪个是哪个,就像上面的例子产生的这张图表:

enter image description here

我真的很想让这两个CDF的颜色不同。然而,我无法弄清楚如何做到这一点。有什么提示吗?


1
是时候从吉尼斯回到咖啡了,JD。有一个 col= 参数,请查看我的编辑答案。 - Dirk Eddelbuettel
3个回答

13

如果我的记忆没有错的话,我过去曾经做过这个。回想起来,你需要以欺骗的方式来处理它,因为Ecdf()是如此的参数化。我认为在 help(ecdf) 中它会提示它只是步函数的图形表示,所以你可以估算两个或更多的ecdfs,绘制其中一个,然后通过 lines() 进行注释。

编辑 结果证明它非常简单,只需要

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

正如帮助页面明确说明的那样,col=参数。但我也发现了一些脚本片段,其中我明确使用了plot.stepfun()


2
手册中明确说明了,我认为我已经阅读过了。显然,我的一杯吉尼斯啤酒挡住了屏幕上的那部分内容。 - JD Long
哇,现在他们有64盎司的“gulp”杯了? - Dirk Eddelbuettel
当我降落在都柏林时,他们给我连接了一袋吉尼斯啤酒。正是这个袋子挡住了我的屏幕。 - JD Long

7
你可以逐个添加曲线(每个都有自己的样式),例如:
Ecdf(rnorm(20), lwd = 2)
Ecdf(rnorm(20),add = TRUE, col = 'red', lty = 1)

1
你也可以只用一次操作,因为 collty 等都支持向量化。 - Dirk Eddelbuettel

0

不使用 Ecdf(似乎没有可用的 Hmisc):

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接