我正在尝试在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")


我希望可以做第5个维度。
非常感谢,

最佳答案

这是一个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进行绘制。

例如,在这里我将var3var4分解为五分位数,并在它们上使用facet_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)

关于r - R中的5维图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23199416/

10-10 16:35