如何在R中绘制示意图的密度曲线?

时间:2018-09-03 19:19:19

标签: r density-plot

我正试图绘制密度曲线图,只是为了表达想法。我尝试了以下代码:

这不是基于任何实际数据,我只需要一个漂亮的图像即可。

green1 <- rnorm(n=10000, mean=6, sd = .5)
green2 <- rnorm(n=10000, mean=18, sd = .5)
green3 <- rnorm(n=10000, mean=30, sd = .5)
green <- c(green1, green2, green3)

red1 <- rnorm(n=10000, mean=-2, sd = .01)
red2 <- rnorm(n=10000, mean=2, sd = .01)
red3 <- rnorm(n=10000, mean=10, sd = .01)
red4 <- rnorm(n=10000, mean=14, sd = .01)
red5 <- rnorm(n=10000, mean=22, sd = .01)
red6 <- rnorm(n=10000, mean=26, sd = .01)

red <- c(red1, red2, red3, red4, red5, red6)

plot(density(green), col= 'blue', xlim=c(-5,35))
lines(density(red), col= 'red')

但是,峰之间的红色曲线并不总是触及0线,并且将sd更改为较小值并不会有所不同。有人可以帮忙吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

问题不在于您的SD。这是为density函数计算带宽的方法。由于数据范围如此之宽,因此density使用的宽带使两个相邻分布重叠。您需要使用adjust参数来减少带宽。这是您的代码,只做了很小的更改。您甚至可以使红色sd更大,这将起作用。

plot(density(green), col= 'blue', xlim=c(-5,35), ylim=c(0,0.14))
lines(density(red, adjust=0.5), col= 'red')

Density curves with reduced bandwidth