首页
学习
活动
专区
圈层
工具
发布

5维图(R)
EN

Stack Overflow用户
提问于 2014-04-21 14:27:43
回答 1查看 6.8K关注 0票数 13

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

代码语言:javascript
复制
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")

我希望这是可能的第五维。非常感谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-21 14:49:12

下面是一个ggplot2选项。我通常回避3D情节,因为它们很难正确解释。我也几乎从来没有在同一幅图中放进5个连续变量.

代码语言:javascript
复制
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分解为Q类,并在它们上使用facet_grid。请注意,我还保留了颜色美学,以强调在高维图形中将连续变量转换为分类的大多数情况下,能够很好地理解关键点(在这里,您会注意到在任何给定的网格单元格中填充颜色和边框颜色是非常一致的):

代码语言:javascript
复制
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)

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23199416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档