根据R中的距离定义3D点图的颜色

时间:2013-04-26 08:05:48

标签: r colors plot

假设我生成了一些三维高斯样本,并用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")

结果图:

wut

但现在我想让远离中心的点变得不那么黑/红。

1 个答案:

答案 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