[英]Problem of coloring 3D scatterplot using “plot3D”
我正在尝试使用plot3D
package 创建一个 3D 分散 plot。 不幸的是,我在为每个点分配颜色时遇到了麻烦。
例如,当我尝试在 plot 上绘制 8 个点时,我想分别将“黑色”分配给前 4 个点,将“红色”分配给最后 4 个点,我编写了以下脚本(在此脚本中,我使用了 8 个示例从样本数据集iris
并尝试将Sepal.Length
、 Petal.Length
、 Sepal.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"
)
现在,如果您想根据 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
着色的另一个向量; 只要确保它与您的 x、y 和 z 数据的长度相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.