繁体   English   中英

使由RGL R包的plot3d函数生成的3D图上的多个组易于区分

[英]Make numerous groups easily distinguishable on 3D plot produced by plot3d function of rgl R package

我得到的3D图示例 我有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)

生成此显示(在调整大小和旋转之后):

在此处输入图片说明

这并不完美,但是如何使用字母aw来区分组呢?

  with(df,plot3d(x,y,z))
  with(df,text3d(x,y,z,texts=letters[titles_2]))

在此处输入图片说明

因为我打算将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)])

彩色3D图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM