R中的彩色编码3D图

时间:2014-06-30 17:30:15

标签: r rgl

我是R的新手,有人可以帮忙吗?

我有一个包含4列的数据框:x,y,z和freq。该帧中的一行表示3D空间中的一个点(x,y,z分别是x,y和z坐标)和它的频率。我想绘制这些点并使这些点着色,使得颜色由频率决定。例如:频率为0的所有点都是蓝色,1到5之间是红色,5到10之间是橙色,10到15之间是黄色,依此类推。某些点的频率也可以为0。但我不知道频率范围。要使用的最大颜色是10.此外,应该有一个解释颜色含义的比例。

我一直在尝试更正以下代码并使其正常工作,但它无法正常工作:

lev <- levels(factor(t$freq)); 
n <- as.numeric(lev); 
n <- n+1; 
plot3d(t$x,t$z,t$z,col=n);

请帮忙!谢谢。

PS-请使用rgl包告诉解决方案 PPS - 我一直试图在rgl包的plot3d函数中操作col争论,但我无法得到所需的结果。

3 个答案:

答案 0 :(得分:3)

我会加载包 rgl 并执行

plot3d(x,y,z, col=colors)

这意味着您应准备一个与x,y,z列表长度相同的颜色值列表,以便为每个x,y,z点选择一种颜色。

另一部分是制作清单。我会试试

givecolor = function(freq){
 if(freq < 1) "red"
 else if ....
}

colors = sapply(mydataframe[,"freq"], givecolor)

答案 1 :(得分:1)

您只需要构建一个颜色矢量,其长度与您绘制的点数相同。然后,将此向量作为col参数传递给rgl plot3d()函数。有关使用iris数据集的演示,请参阅此页面:http://planspace.org/2013/02/03/pca-3d-visualization-and-clustering-in-r/

答案 2 :(得分:0)

首先,您应该选择自己喜欢的调色板并选择所需的颜色数量,例如调色板=彩虹(10)。然后使用从分割数据中获得的因子10种方法来设置调色板中的颜色。

有关如何通过新创建的因子有效地拆分数据帧,请参阅3d scatterplot in R using rgl plot3d - different size for each data point?。那个问题是w.r.t.尺寸,但它也适用于颜色。