13

我正在尝试在 R 中绘制一个 5 维图。我目前正在使用该rgl包以 4 维绘制我的数据,使用 3 个变量作为 x、y、z 坐标,另一个变量作为颜色。我想知道是否可以使用此包添加第五个变量,例如空间中点的大小或形状。这是我的数据和当前代码的示例:

set.seed(1)
df <- data.frame(replicate(4,sample(1:200,1000,rep=TRUE)))
addme <- data.frame(replicate(1,sample(0:1,1000,rep=TRUE)))
df <- cbind(df,addme)
colnames(df) <- c("var1","var2","var3","var4","var5")
require(rgl)
plot3d(df$var1, df$var2, df$var3, col=as.numeric(df$var4), size=0.5, type='s',xlab="var1",ylab="var2",zlab="var3")

我希望有可能做第五维。非常感谢,

4

1 回答 1

27

这是一个ggplot2选项。我通常会回避 3D 绘图,因为它们很难正确解释。我也几乎从来没有像这里一样在同一个图中放入 5 个连续变量......

ggplot(df, aes(x=var1, y=var2, fill=var3, color=var4, size=var5^2)) +
  geom_point(shape=21) +
  scale_color_gradient(low="red", high="green") +
  scale_size_continuous(range=c(1,12))

在此处输入图像描述

虽然这有点混乱,但您实际上可以合理地阅读所有 5 个维度的大多数点。

如果您的某些变量是分类变量,则可以使用更好的多维绘图方法。如果所有变量都是连续的,则可以将其中一些变量转换为分类变量,cut然后使用facet_wrapfacet_grid绘制这些变量。

例如,在这里我分解成五分位数并使用var3它们。请注意,我还保留了颜色美学,以强调大多数时候在高维图中将连续变量转换为分类变量足以让关键点跨越(在这里你会注意到填充和边框颜色很漂亮在任何给定的网格单元内统一):var4facet_grid

df$var4.cat <- cut(df$var4, quantile(df$var4, (0:5)/5), include.lowest=T)
df$var3.cat <- cut(df$var3, quantile(df$var3, (0:5)/5), include.lowest=T)

ggplot(df, aes(x=var1, y=var2, fill=var3, color=var4, size=var5^2)) +
  geom_point(shape=21) +
  scale_color_gradient(low="red", high="green") +
  scale_size_continuous(range=c(1,12)) +
  facet_grid(var3.cat ~ var4.cat)

在此处输入图像描述

于 2014-04-21T14:49:12.733 回答