用密度图中的点替换线段

Replacing line segments with points in a density plot

我想知道如何用 points 替换当前显示的第 7 行 segments?也就是说,而不是 7 条黑线 segments 我需要 7 条 points 线从每条线 segments 的底部到曲线? (而不是 7 条线段,我将有 7 条垂直线点)

请看图片下方我的R代码

A = rnorm(1e3)

B = density(A)

x = B$x  ;  y = (B$y)*(B$n)

plot(x, y, type = "l")

x.DEN = seq(-3, 3)
y.DEN = approx(x, y, xout = x.DEN )$y

segments(x.DEN, par("usr")[3], x.DEN, y.DEN) ## HERE I need points 

一个想法,如果您需要点,可以使用 mapply 来获取您想要的点的位置,然后 lapply 将它们全部添加到图表中。像这样:

mypoints <- mapply(function(x, y, z) data.frame(y = seq(x, y, length.out=floor((y-x)/5)),
                                                x = z),
                     x = rep(par("usr")[3], length(y.DEN)),
                     y = y.DEN,
                     z = x.DEN ,SIMPLIFY = F)

lapply(mypoints, function(z) points(x = z$x, y = z$y))

从那里您可以将 size/point 类型更改为您想要的任何类型。您还可以通过除以 length.out=... 中的 lower/higher 数字来增加或减少点数。我选择了5,因为它看起来不错。