【发布时间】:2017-11-25 15:53:03
【问题描述】:
从 R 文档link 中的以下代码中,我想弄清楚如何为数据帧的每个原始点提取单个值(“密度”) 这样,我就可以将新列用于我想到的 3D 空间中的“点”密度的进一步应用。
我查看了这个 SO 问题:link,但该代码给出了一个 51 层的矩阵。我不知道如何获得 150 个点值。
在我的情况下,我担心使用的三元示例:
fhat <- kde(x=iris[,1:3])
这是代码,它给出了一个很好的情节,但我无法为 iris 数据集中的 150 行/点中的每一个获取一个值
library(ks)
library(MASS)
data(iris)
## univariate example
fhat <- kde(x=iris[,2])
plot(fhat, cont=50, col.cont="blue", cont.lwd=2, xlab="Sepal length")
## bivariate example
fhat <- kde(x=iris[,2:3])
plot(fhat, display="filled.contour2", cont=seq(10,90,by=10))
plot(fhat, display="persp", thin=3, border=1, col="white")
## trivariate example
fhat <- kde(x=iris[,2:4])
plot(fhat, drawpoints=TRUE)
【问题讨论】:
-
谢谢,已更正错误!
-
ks包有一些生成绘图的私有方法。因此,其中的代码显示了如何获取绘图值。您可以通过在 R 控制台中输入ks:::plotkde.1d(以及.2d和3d变体)来查看这些函数。您也可以str(fhat)来查看计算得到的数据。看看其中是否有任何导致答案路径。如果他们不这样做或他们感到困惑,请将令人困惑/未能达到目标的代码位添加到问题中,并且很可能可以确定一条富有成效的路径。 -
我打算做的是使用每点的密度值来设置 plotly scatter3d 中点的颜色(可能通过在有限数量的密度类别中合并值),以便可以将点云例如,根据密度将浅红色着色到非常深的红色。在这些图中,Plotly 本身没有办法做到这一点,所以我有一个绕过的想法,但首先需要有一个具有密度值的列。我看了你已经提到的代码,但无法理解
标签: r 3d kernel-density extrapolation