如何在 rgl 设备中添加多个数据子集作为球体或点?添加 = T 不工作
How can I add in rgl device several subsets of data as spheres or points? add=T is not working
我的 rgl.spheres 需要帮助。我有下面的代码,并添加一组数据作为 rgl 设备内的球体在 3D 中工作(对于整个数据集)。我刚刚创建了这些数据的子集,并想用不同的颜色绘制它们,甚至自定义它们为每个子集添加一个椭圆。
像往常一样在 "normal" 二维 R-plots 中,我只是像
这样打开图
plot(x,y, col="red", cex=1, ...)
使用 "points" 命令我将每个子集添加到初始图下方。我想为 rgl 设备使用相同的结构,但即使在 rgl.spheres(....add=T)
内部也不起作用。有没有人有办法克服这个问题?致以最诚挚的问候,并在此先感谢您的帮助,Chris
我已经尝试在 rgl.spheres(... add=T)
中使用并尝试(为我自己)找到像 add.spheres(...) 或 rgl.add.spheres(...) 这样的逻辑命令但是这些显然不起作用。
rgl.open()
x <- c(1,2,3,4,5,6)
y<-c(9,5,2,7,7,3)
z<-c(0.1,1,1,4,6,7)
x1 <- 1
y1 <- 9
z1 <- 0.1
rgl.spheres(x,y,z, r = 0.1, color = "grey")
rgl.spheres(x1,y1,z1, r=0.1, color="red", add=T) # is not working
所以如果在 rgl 中有类似 "points" 球体或其他物体的命令,应该有一个红色球体和一些灰色球体。
您可能应该使用 vignette("rgl", package="rgl")
阅读有关 rgl
的小插图。但快速总结:
- 不要使用
rgl.*
函数。它们是低级函数,除非您非常熟悉它们的工作原理,否则会给您带来问题。使用 *3d
函数,例如open3d
、spheres3d
等
- 大多数绘图函数(包括
spheres3d
)总是添加到当前场景。你不需要 add = TRUE
.
- 默认情况下,如果在同一位置绘制了两个东西,则先绘制的内容将显示。由于您绘制球体的两个指令都包含点
(1, 9, 0.1)
,因此只会显示第一个。您可以通过以下方式覆盖它
使第二个语句绘制一个更大的球体(其近侧将更靠近观察者,因此可见),或者通过 material 属性 depth_test
的设置进行播放。设置depth_test = "lequal"
表示显示最后绘制的东西。
将所有这些放在一起,这是您的代码的修订版:
library(rgl)
open3d()
x <- c(1,2,3,4,5,6)
y<-c(9,5,2,7,7,3)
z<-c(0.1,1,1,4,6,7)
x1 <- 1
y1 <- 9
z1 <- 0.1
spheres3d(x,y,z, r = 0.1, color = "grey")
spheres3d(x1,y1,z1, r=0.1, color="red", depth_test = "lequal")
我的 rgl.spheres 需要帮助。我有下面的代码,并添加一组数据作为 rgl 设备内的球体在 3D 中工作(对于整个数据集)。我刚刚创建了这些数据的子集,并想用不同的颜色绘制它们,甚至自定义它们为每个子集添加一个椭圆。
像往常一样在 "normal" 二维 R-plots 中,我只是像
这样打开图plot(x,y, col="red", cex=1, ...)
使用 "points" 命令我将每个子集添加到初始图下方。我想为 rgl 设备使用相同的结构,但即使在 rgl.spheres(....add=T)
内部也不起作用。有没有人有办法克服这个问题?致以最诚挚的问候,并在此先感谢您的帮助,Chris
我已经尝试在 rgl.spheres(... add=T)
中使用并尝试(为我自己)找到像 add.spheres(...) 或 rgl.add.spheres(...) 这样的逻辑命令但是这些显然不起作用。
rgl.open()
x <- c(1,2,3,4,5,6)
y<-c(9,5,2,7,7,3)
z<-c(0.1,1,1,4,6,7)
x1 <- 1
y1 <- 9
z1 <- 0.1
rgl.spheres(x,y,z, r = 0.1, color = "grey")
rgl.spheres(x1,y1,z1, r=0.1, color="red", add=T) # is not working
所以如果在 rgl 中有类似 "points" 球体或其他物体的命令,应该有一个红色球体和一些灰色球体。
您可能应该使用 vignette("rgl", package="rgl")
阅读有关 rgl
的小插图。但快速总结:
- 不要使用
rgl.*
函数。它们是低级函数,除非您非常熟悉它们的工作原理,否则会给您带来问题。使用*3d
函数,例如open3d
、spheres3d
等 - 大多数绘图函数(包括
spheres3d
)总是添加到当前场景。你不需要add = TRUE
. - 默认情况下,如果在同一位置绘制了两个东西,则先绘制的内容将显示。由于您绘制球体的两个指令都包含点
(1, 9, 0.1)
,因此只会显示第一个。您可以通过以下方式覆盖它 使第二个语句绘制一个更大的球体(其近侧将更靠近观察者,因此可见),或者通过 material 属性depth_test
的设置进行播放。设置depth_test = "lequal"
表示显示最后绘制的东西。
将所有这些放在一起,这是您的代码的修订版:
library(rgl)
open3d()
x <- c(1,2,3,4,5,6)
y<-c(9,5,2,7,7,3)
z<-c(0.1,1,1,4,6,7)
x1 <- 1
y1 <- 9
z1 <- 0.1
spheres3d(x,y,z, r = 0.1, color = "grey")
spheres3d(x1,y1,z1, r=0.1, color="red", depth_test = "lequal")