7

我试图在一个图上绘制 4 个 ecdf 函数,但似乎无法找出正确的语法。

如果我有 4 个函数“A、B、C、D”,那么 R 中的正确语法是什么,可以让它们以不同的颜色绘制在同一张图表上。谢谢!

4

4 回答 4

14

这是一种方法(其中三个,四个相同的方法):

set.seed(42)
ecdf1 <- ecdf(rnorm(100)*0.5)
ecdf2 <- ecdf(rnorm(100)*1.0)
ecdf3 <- ecdf(rnorm(100)*2.0)
plot(ecdf3, verticals=TRUE, do.points=FALSE)
plot(ecdf2, verticals=TRUE, do.points=FALSE, add=TRUE, col='brown')
plot(ecdf1, verticals=TRUE, do.points=FALSE, add=TRUE, col='orange')

请注意,我使用的是第三个范围最广的事实,并使用它来初始化画布。否则你需要ylim=c(...)

在此处输入图像描述

于 2013-12-16T00:45:08.263 回答
8

latticeExtra提供功能ecdfplot

library(lattice)
library(latticeExtra)

set.seed(42)
vals <- data.frame(r1=rnorm(100)*0.5,
                   r2=rnorm(100),
                   r3=rnorm(100)*2)

ecdfplot(~ r1 + r2 + r3, data=vals, auto.key=list(space='right')

带有图例的 ecdfplot

于 2013-12-16T14:01:43.207 回答
5

这是一种使用方法ggplot2(使用 [Dirk's answer] 中的 ecdf 对象)(https://stackoverflow.com/a/20601807/1385941

library(ggplot2)
# create a data set containing the range you wish to use
d <- data.frame(x = c(-6,6))
# create a list of calls to `stat_function` with the colours you wish to use

ll <- Map(f  = stat_function, colour = c('red', 'green', 'blue'),
          fun = list(ecdf1, ecdf2, ecdf3), geom = 'step')


ggplot(data = d, aes(x = x)) + ll

在此处输入图像描述

于 2013-12-16T01:11:02.603 回答
0

一种更简单的方法是使用 ggplot 并将要绘制的变量作为一个因素。在下面的示例中,我将投资组合作为一个因素,并按投资组合绘制利率分布。

# select a palette
myPal <- c( 'royalblue4', 'lightsteelblue1', 'sienna1')

# plot the Interest Rate distribution of each portfolio
# make an ecdf of each category in Portfolio which is a factor
g2 <- ggplot(mortgage, aes(x = Interest_Rate, color = Portfolio)) + 
      scale_color_manual(values = myPal) +
      stat_ecdf(lwd = 1.25, geom = "line")
      
g2

您还可以在功能中设置geom = "step", geom = "point"和调整线宽。这为您提供了一个很好的图例。lwdstat_ecdf()

在此处输入图像描述

于 2021-01-08T14:28:11.033 回答