0

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

我有一个包含 4 列的数据框:x、y、z 和频率。这一帧中的一行代表 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 争论,但我无法获得所需的结果。

4

3 回答 3

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)
于 2014-06-30T17:38:48.503 回答
1

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

于 2014-06-30T17:37:40.263 回答
0

首先你应该选择一个你喜欢的调色板并选择你想要的颜色数量,例如palette=rainbow(10)。然后使用从拆分数据中获得的 10 种方法从调色板中设置颜色。

使用 rgl plot3d查看R 中的 3d 散点图 - 每个数据点的大小不同?如何通过新创建的因子有效地拆分数据框。这个问题是大小,但它也适用于颜色。

于 2018-02-21T15:32:01.987 回答