我正在尝试在一个图表上绘制4个ecdf函数,但似乎无法找出正确的语法。
如果我有4个函数"A,B,C,D",在R中如何使用正确的语法将它们绘制在同一张图上并具有不同的颜色。谢谢!
这里有一种方法(对于其中的三个,对于四个同样有效):
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(...)
。
软件包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')
下面是使用ggplot2
的一种方法(使用[Dirk的答案](https://dev59.com/NnrZa4cB1Zd3GeqP0kmz#20601807)中的ecdf对象)
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
# 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
您还可以在stat_ecdf()
函数中设置geom = "step",geom = "point"
并调整线宽lwd
。这将为您提供一个带有图例的漂亮图表。
Hmisc :: Ecdf
进行的。(有时重新做一遍会更容易些。) - IRTFM