假设我生成了一些三维高斯样本,并用plot3D绘制这些样本。我想根据它们到云中心的距离来对点进行着色。我的意思是,我想在 white (=远离中心)和 somecolor (非常接近中心)之间给它们一种颜色。
我知道colorRamp和colorRampPalette等功能,但我不确定如何在这种特定情况下使用它们。任何帮助将不胜感激!
编辑这是我到目前为止所做的:
library(rgl)
#generate two 3D point clouds
cloud1 <- rmnorm(100,mean=c(1,1,1),varcov=diag(.25,3))
cloud2 <- rmnorm(75, mean=c(3,3,3),varcov=diag(.5,3))
plot3d(cloud1,box=F)
points3d(cloud2,col="red")
结果图:
但现在我想让远离中心的点变得不那么黑/红。
答案 0 :(得分:1)
你可以尝试这样的事情:
cloud1 <- rmnorm(100,mean=c(1,1,1),varcov=diag(.25,3))
# for an euclidean distance but a manhalobis distance should be more appropriated
aux <- colSums((t(cloud1)-colMeans(cloud1))^2)
col1 <- colorRampPalette(c("red", "white"))
# i used quantiles but equal interval could be used to
cols1 <- col1(11)[findInterval(aux, quantile(aux, seq(0,1,0.1)), right=T)]
# with equal interval
cols1 <- col1(11)[findInterval(aux, seq(min(aux), max(aux), le=10))]
plot3d(cloud1,box=F, col=cols1)
HTH