我有一个 30 x 16 x 9 矩阵,我想通过 R 中的 4 维图将其可视化。
我已经在 plot3d
和 scatterplot3d
包中尝试了 scatter3D()
。
x <- seq(10, 300, 10)
y <- seq(5.0, 20.0, 1.0)
z <- c(seq(0.5, 4, 0.5), 10)
scatter3D(x, y, z, colvar = data)
它总是给出错误,指出y
应该与x
具有相同的长度。
我该如何处理这个问题?为什么x
、y
、z
的长度必须相等?这样很不方便。
最佳答案
发生这种情况是因为该图的每个点必须具有三个值。您有 30 个 x 值、16 个 y 值和 9 个 z 值。使用此数据,只有前 9 个点具有 x-y-z 值。在您问题的评论中,eipi10对此给出了很好的解释。例如,另一种方法是对数据进行插值以创建缺失值。 More about data interpolation .
library("plot3D")
number_of_points <- 50
xx <- seq(10, 300, 10)
yy <- seq(5.0, 20.0, 1.0)
zz <- c(seq(0.5, 4, 0.5), 10)
xx <- approx(x = xx, method="linear", n=number_of_points, ties = mean)$y
yy <- approx(x = yy, method="linear", n=number_of_points, ties = mean)$y
zz <- approx(x = zz, method="linear", n=number_of_points, ties = mean)$y
scatter3D(xx, yy, zz)
希望对你有帮助!
关于r - 在 R 中使用不同的 x、y、z 颜色和长度绘制 4D 绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50398121/