【问题标题】:Colour-coded 3D Plot in RR中的彩色编码3D绘图
【发布时间】:2014-06-30 17:30:14
【问题描述】:

我是 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 争论,但我无法得到想要的结果。

【问题讨论】:

  • 请添加您的问题示例(数据 + 代码),以及您迄今为止尝试过的内容。这使人们更容易为您提供帮助。
  • 我一直在尝试更正以下代码并使其工作,但它只是不工作:lev
  • 我会将这些细节添加到您的原始帖子中,而不是作为评论。
  • 对不起,我是堆栈溢出的新手。我没有t posted a lot of questions before, so I didnt 知道。谢谢你告诉我。
  • 请注意,我们没有您的数据 (t),因此更难回答问题。

标签: r rgl


【解决方案1】:

我会加载包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)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多