R plot3d着色
R plot3d coloring
我正在使用 rgl
中的 plot3d()
制作数据框中样本的三列 3D 散点图。此外,我使用数据框中的第四列 colorby
(其中每个样本取值,例如 10、11、12 作为 factors/levels)来为图中的点着色。
当使用 plot()
制作二维绘图时,我首先设置 palette(rainbow(3))
,然后在 plot()
内设置 col = colorby
,然后设置 legend()
。情节、颜色和图例都很好。
但是,当我为 plot3d()
重复最后一部分时,颜色会混淆,并且不会将相同的颜色分配给与 plot()
中相同的级别。此外,如果我使用 legend3d("topright", legend = levels(colorby), col = rainbow(3))
创建图例,它看起来与 2D 图例相同,但在 3D 绘图中着色显然是错误的。
我哪里错了?
这对我来说是正确的:
df <- data.frame(x=1:9, y=9:1, z=101:109, colorby=gl(3,3))
palette(rainbow(3))
plot(x~y, df, col = df$colorby)
library(rgl)
with(df, plot3d(x,y,z, col = colorby))
legend3d("topright", legend = levels(df$colorby), col = levels(df$colorby), pch=19)
我正在使用 rgl
中的 plot3d()
制作数据框中样本的三列 3D 散点图。此外,我使用数据框中的第四列 colorby
(其中每个样本取值,例如 10、11、12 作为 factors/levels)来为图中的点着色。
当使用 plot()
制作二维绘图时,我首先设置 palette(rainbow(3))
,然后在 plot()
内设置 col = colorby
,然后设置 legend()
。情节、颜色和图例都很好。
但是,当我为 plot3d()
重复最后一部分时,颜色会混淆,并且不会将相同的颜色分配给与 plot()
中相同的级别。此外,如果我使用 legend3d("topright", legend = levels(colorby), col = rainbow(3))
创建图例,它看起来与 2D 图例相同,但在 3D 绘图中着色显然是错误的。
我哪里错了?
这对我来说是正确的:
df <- data.frame(x=1:9, y=9:1, z=101:109, colorby=gl(3,3))
palette(rainbow(3))
plot(x~y, df, col = df$colorby)
library(rgl)
with(df, plot3d(x,y,z, col = colorby))
legend3d("topright", legend = levels(df$colorby), col = levels(df$colorby), pch=19)