R 密度图:如何添加从 x 轴到密度曲线顶部的实线

发布于 2024-12-03 09:42:46 字数 190 浏览 2 评论 0原文

我有一个密度图,使用以下方法绘制:

plot(density(x))

我感兴趣的是创建一条从 x 轴到曲线上相应点的线,例如 x = 5。

像这样:

example

I have a density plot graphed using:

plot(density(x))

What I am interested in doing is creating a line for something like x = 5 from the x-axis to the corresponding spot on the curve.

Like this:

example

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心凉 2024-12-10 09:42:46

为此,您可以首先将密度值存储在对象中,然后从该对象中检索 xy 元素。在以下示例中,我使用 findInterval 检索给定 x 值的 y 值:

x <- rnorm(1000) # Sample data
y <- density(x)  # Calculate and store density

x0 <- 2 # Desired position on x-axis
y0 <- y$y[findInterval(x0, y$x)] # Corresponding y value

plot(density(x))
segments(x0, 0, x0, y0)

You can do this by first storing the density values in an object, and then retrieving the x and y elements from this object. In the following example I use findInterval to retrieve the y-value for the given x-value:

x <- rnorm(1000) # Sample data
y <- density(x)  # Calculate and store density

x0 <- 2 # Desired position on x-axis
y0 <- y$y[findInterval(x0, y$x)] # Corresponding y value

plot(density(x))
segments(x0, 0, x0, y0)

enter image description here

暖树树初阳… 2024-12-10 09:42:46

如果它确实是 z 分数,那么只需实际绘制密度函数 dnorm() 即可。您似乎还希望实际的 x 轴位于 0 处。

zmax <- 4
curve(dnorm, -zmax, zmax, xaxt = 'n', bty = 'n')
axis(1, -zmax:zmax, pos = 0)

要绘制线条,您可以再次使用 dnorm 函数。

zscore <- 1.65
segments(zscore, 0, zscore, dnorm(zscore))

您甚至还可以很好地遮蔽它...:)

x <- seq(zscore, zmax, 0.01)
y <- c(0, dnorm(x)[1:(length(x)-2)],0)
polygon(x,y, density = 20)

您还可以使用segmentstext命令将标签放在您的图形上,显示阴影和未阴影的内容地区的意思。
thegraph

If it's really z-scores then just actually plot the density function dnorm(). It also looks like you'd like to have your actual x-axis at 0.

zmax <- 4
curve(dnorm, -zmax, zmax, xaxt = 'n', bty = 'n')
axis(1, -zmax:zmax, pos = 0)

To draw in your line you can use the dnorm function again.

zscore <- 1.65
segments(zscore, 0, zscore, dnorm(zscore))

You could also even shade it out nicely... :)

x <- seq(zscore, zmax, 0.01)
y <- c(0, dnorm(x)[1:(length(x)-2)],0)
polygon(x,y, density = 20)

You can also use segments and the text command to put the labels right on your graph of what the shaded and unshaded areas mean.
thegraph

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文