【问题标题】:How to make schematic density curves in r?如何在r中制作示意性密度曲线?
【发布时间】:2019-02-08 20:02:42
【问题描述】:

我正在尝试制作示意性密度曲线,只是为了代表想法。我尝试了以下代码:

这不是基于任何实际数据,我只需要一张漂亮的图片。

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 更改为更小的值并没有什么不同。有人可以帮忙吗?

非常感谢!

【问题讨论】:

    标签: r density-plot


    【解决方案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')
    

    【讨论】:

    • 谢谢!这太棒了。我能再要求一件事吗?我希望蓝色的比红色的高。也可以这样调整吗?再次感谢!
    • 是的。将所有sd=0.1 设为红点。然后使用plot(density(green, adjust=0.6), col= 'blue', xlim=c(-5,35)); lines(density(red, adjust=0.5), col= 'red')
    猜你喜欢
    • 1970-01-01
    • 2013-05-30
    • 2018-05-09
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多