【问题标题】:3d scatterplot with colored spheres with R and Rgl带有 R 和 Rgl 的彩色球体的 3d 散点图
【发布时间】:2018-05-16 01:25:57
【问题描述】:

我想创建一个球体的 3d 散点图,它们的颜色是第四维。 我在 csv 文件中有数据,其中每一行表示粒子的 x、y、z 位置,并且我有一列告诉我粒子的值(1,2 或 3)。如果它们的值为 1,我想用一种颜色为球着色,否则用另一种颜色着色。

编辑:

我创建了以下代码:

library(rgl)
m <- read.csv(file="mem0.csv", sep = ",", head=TRUE)
mcol = m$val
i = 1 
mdim = dim(m)

while (i <= mdim[1] ){
   if (mcol[i] == 1){
      mcol[i] = "red"
   }else {
      mcol[i] = "blue"
   }
   i = i +1
}

plot3d(m$x, m$y, m$z, col = mcol, type='s', size=0.1)

编辑编号 2:

我使用 rgl.snapshot() 导出到 svg 文件:

数据应该再次显示一层红球、4层蓝球和一层红球。

【问题讨论】:

标签: r plot rgl


【解决方案1】:

rgl 包的plot3d() 函数可以很容易地完成这样的事情。你甚至可以交互式地探索你的情节:

R> library(rgl)

R> df <- data.frame(x=runif(10,0,1),
+                  y=runif(10,0,1),
+                  z=runif(10,0,1),
+                  color=round(runif(10,1,3)))
R> df
            x         y          z color
1  0.73518229 0.1385970 0.69053482     2
2  0.88789302 0.6872121 0.54734176     2
3  0.79402546 0.5771570 0.89613292     1
4  0.19922140 0.2117405 0.25116078     1
5  0.31825325 0.7449661 0.01174593     2
6  0.64614521 0.4704698 0.68905621     1
7  0.15242295 0.6461338 0.77896858     1
8  0.32698024 0.4548752 0.33969754     3
9  0.00793849 0.6557488 0.75901935     2
10 0.20460232 0.9302882 0.23413984     3

您可以像这样拨打plot3d()

R> plot3d(df$x, df$y, df$z, col=df$color, size=2, type='s')

这会给你类似的东西:

【讨论】:

  • 谢谢。这有点涉及两个重要的问题:1,我想用一种颜色(比如红色)为所有球着色,并用另一种颜色(比如蓝色)为一组具有特殊值的球着色。 2、我创建了1000个球,颜色不对。会不会是球太多了?
  • 您应该在数据框中创建另一个“颜色”变量,其中包含每个球体所需的颜色名称。如果球体数量很多,相同的颜色会被分配多次。
猜你喜欢
  • 2014-07-30
  • 1970-01-01
  • 2017-02-05
  • 2018-01-13
  • 2016-12-30
  • 2018-10-03
  • 2023-03-08
  • 2012-02-12
  • 2011-07-26
相关资源
最近更新 更多