График плотности R: Как добавить сплошную линию от оси X к вершине кривой плотности - PullRequest
0 голосов
/ 08 сентября 2011

Я построил график плотности, используя:

plot(density(x))

Что меня интересует, так это создание линии для чего-то вроде х = 5 от оси х до соответствующей точки на кривой.

Как это:

example

Ответы [ 2 ]

5 голосов
/ 08 сентября 2011

Вы можете сделать это, сначала сохраняя значения плотности в объекте, а затем извлекая элементы x и y из этого объекта. В следующем примере я использую findInterval, чтобы получить значение y для данного значения x:

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

1 голос
/ 08 сентября 2011

Если это действительно z-показатели, то просто построить график функции плотности dnorm(). Выглядит так, как будто вы хотите, чтобы ваша фактическая ось х была равна 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)

Вы также можете использовать segments и команду text, чтобы разместить на графике метки того, что означают заштрихованные и не заштрихованные области. thegraph

...