[英]Cannot plot rglscene object by means of plot3d() function of rgl R package
[英]Make numerous groups easily distinguishable on 3D plot produced by plot3d function of rgl R package
我有23个不同的组,每个组由7至20个具有自己的x,y和z坐标的样本(总共大约350-400个观测值)组成。 我想通过rgl
R
包的plot3d
函数基于我拥有的数据生成3D图。 总的来说这没什么大不了的。 问题是,我想使上述23个组中的每个组在3D图上易于区分。 我尝试为每个组使用不同的颜色,但不幸的是,不可能找到人眼可识别的23种颜色。 我在考虑pch
参数,就像在基础R
库的plot
函数中一样。 但是,再次,正如我所看到的, plot3d
函数中没有这样的选项。 此外,我必须解释一下,我的数据集中有太多的点,并且在每个点上添加标签(例如,使用text3d
rgl函数)不是一个好主意(它们会相互重叠,并导致某种结果) 3D图上的混乱)。 有没有办法解决这个问题(我猜这是很常见的问题)? 先感谢您!
以下是一些玩具示例的代码,以进行更好的说明:
# generate data
prefix=rep("ID",69)
suffix=rep(1:23,3)
suffix_2=as.character(suffix[order(suffix)])
titles_1=paste(prefix,suffix,sep="_")
titles_2=titles_1[order(titles_1)]
x=1:69
y=x+20
z=x+50
df=data.frame(titles_2,x,y,z)
# load rgl library
library('rgl')
# make 3D plot
plot3d(x,y,z)
如果您喜欢生活在前沿,则有一个新函数rgl::pch3d()
可以使用与基础图形中的points()
相同的代码绘制符号。 它在rgl
0.95.1475中,可在R-forge上使用(在Github上几个小时内;请参见如何安装最新版本的rgl? )。 它尚未完全与rglwidget()
一起使用。
示例代码
open3d()
i <- 0:25; x <- i %% 5; y <- rep(0, 26); z <- i %/% 5
pch3d(x, y, z, pch = i, bg = "green")
text3d(x, y, z + 0.3, i)
pch3d(x + 5, y, z, pch = LETTERS[i+1])
text3d(x + 5, y, z + 0.3, i+65)
生成此显示(在调整大小和旋转之后):
因为我打算将3D图用于发布目的,所以我暂时使用了此解决方案。 它并不假装是最好的。
# generate data
prefix=rep("ID",69)
suffix=rep(1:23,3)
suffix_2=as.character(suffix[order(suffix)])
titles_1=paste(prefix,suffix,sep="_")
titles_2=titles_1[order(titles_1)]
x=1:69
y=x+20
z=x+50
df=data.frame(titles_2,x,y,z)
# load rgl library
library('rgl')
# load randomcoloR library
library(randomcoloR)
# create a custom palette
palette <- distinctColorPalette(23)
palette(palette)
# make 3D plot
plot3d(x,y,z,size = 10,col=suffix[order(suffix)])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.