R `绘图。密度“延伸”;xlim“;超出了我的数据范围。为什么以及如何修复它?

R `绘图。密度“延伸”;xlim“;超出了我的数据范围。为什么以及如何修复它?,r,plot,kernel-density,R,Plot,Kernel Density,使用下面的代码,我试图得到不同分布的密度图 dens <- apply(df[,c(7,9,12,14,16,18)], 2, density) plot(NA, xlim=range(sapply(dens, "[", "x")), ylim=range(sapply(dens, "[", "y"))) mapply(lines, dens, col=1:length(dens)) legend("topright", legend=names(dens), fill=1:lengt

使用下面的代码,我试图得到不同分布的密度图

dens <- apply(df[,c(7,9,12,14,16,18)], 2, density)

plot(NA, xlim=range(sapply(dens, "[", "x")), ylim=range(sapply(dens, "[", "y")))
mapply(lines, dens, col=1:length(dens))

legend("topright", legend=names(dens), fill=1:length(dens),bty = "n",lwd=1, cex=0.7)

dens默认情况下,
density
将扩展该范围,使密度曲线在极值处接近0。是否要将曲线限制在数据范围内?如果是这样,您需要在
density()中使用
from
to
参数

x_范围
x_range <- range(df[,c(7,9,12,14,16,18)])
dens <- apply(df[,c(7,9,12,14,16,18)], 2, density, from = x_range[1], to = x_range[2])
set.seed(0); X <- matrix(rnorm(300), 100, 3)

## range of your data
x_range <- range(X)
# [1] -2.904899  2.658658

## default handling of `density`
dens <- apply(X, 2, density)
range(sapply(dens, "[[", "x"))
# [1] -3.922346  3.696451
## customized `from` and `to`
dens <- apply(X, 2, density, from = x_range[1], to = x_range[2])
range(sapply(dens, "[[", "x"))
# [1] -2.904899  2.658658