如何在 r 中制作示意图密度曲线?
How to make schematic density curves in r?
我正在尝试制作示意性密度曲线,只是为了表达想法。我尝试了以下代码:
这不是基于任何实际数据,我只需要一张漂亮的图片。
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 更改为更小的值并没有什么不同。有人可以帮忙吗?
非常感谢!
问题不在于你的 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')
我正在尝试制作示意性密度曲线,只是为了表达想法。我尝试了以下代码:
这不是基于任何实际数据,我只需要一张漂亮的图片。
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 更改为更小的值并没有什么不同。有人可以帮忙吗?
非常感谢!
问题不在于你的 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')