我是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争论,但我无法得到所需的结果。
答案 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.尺寸,但它也适用于颜色。