用密度图中的点替换线段
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,因为它看起来不错。
我想知道如何用 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,因为它看起来不错。