繁体   English   中英

使用“plot3D”为 3D 散点图着色的问题

[英]Problem of coloring 3D scatterplot using “plot3D”

我正在尝试使用plot3D package 创建一个 3D 分散 plot。 不幸的是,我在为每个点分配颜色时遇到了麻烦。

例如,当我尝试在 plot 上绘制 8 个点时,我想分别将“黑色”分配给前 4 个点,将“红色”分配给最后 4 个点,我编写了以下脚本(在此脚本中,我使用了 8 个示例从样本数据集iris并尝试将Sepal.LengthPetal.LengthSepal.Width分别分配给 X、Y、Z 轴);

data(iris)
sep.l <- iris[1:8,]$Sepal.Length
pet.l <- iris[1:8,]$Petal.Length
sep.w <- iris[1:8,]$Sepal.Width


library(plot3D)
scatter3D(x=sep.l, y=pet.l, z=sep.w,
pch =19,
bty = "b2",
colkey= FALSE,
col=c(rep("black", 4), rep("red", 4)))

在这种情况下,奇怪的是,分别有 6 个点被涂成黑色,2 个点被涂成红色。 我完全不知道为什么会发生这种情况。

如果您能告诉我如何解决这个问题,我将不胜感激。 非常感谢您!

您看到 6 个黑色和 2 个红色的原因是您的colvar调用中缺少scatter3D以用于col着色。

在您的示例中,颜色基于您的 z 轴。 为了演示,我们可以添加回colkey ,添加ticktype以查看轴信息,并旋转一点以显示红色应用于sep.w (z 轴)中超过 3.45 的值,其中仅包括数据中的 2 个值(3.6 和 3.9)。

data(iris)

sep.l <- iris[1:8,]$Sepal.Length
pet.l <- iris[1:8,]$Petal.Length
sep.w <- iris[1:8,]$Sepal.Width

library(plot3D)

scatter3D(x = sep.l, y = pet.l, z = sep.w,
          pch = 19,
          bty = "b2",
          colkey = TRUE,
          phi = 15,
          theta = 30,
          col=c(rep("black", 4), rep("red", 4)),
          ticktype = "detailed"
          )

缺少 colvar 的 plot1

现在,如果您想根据 8 个点的索引/编号分配 colors,您可以添加colvar并分配给,例如,前 4 个值作为黑色的 1,第二个 4 的值作为红色的 2:

scatter3D(x = sep.l, y = pet.l, z = sep.w,
          pch = 19,
          bty = "b2",
          colkey = FALSE,
          phi = 15,
          theta = 30,
          col=c(rep("black", 4), rep("red", 4)),
          ticktype = "detailed",
          colvar = c(rep(1, 4), rep(2, 4)))

包含 colvar 的 plot2

您可以考虑为colvar着色的另一个向量; 只要确保它与您的 x、y 和 z 数据的长度相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM