在 rgl R 包的 plot3d 函数生成的 3D 图上使众多组易于区分

Posted

技术标签:

【中文标题】在 rgl R 包的 plot3d 函数生成的 3D 图上使众多组易于区分【英文标题】:Make numerous groups easily distinguishable on 3D plot produced by plot3d function of rgl R package 【发布时间】:2016-05-10 23:31:28 【问题描述】:

我有 23 个不同的组,每个组由 7 到 20 个单独的样本(总共大约 350-400 个观察值)组成,它们有自己的 x、y 和 z 坐标。我想通过rglR包的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)

【问题讨论】:

【参考方案1】:

如果您喜欢生活在最前沿,有一个新功能 rgl::pch3d() 使用与 points() 相同的代码绘制符号 在基础图形中。它位于 rgl 0.95.1475 中,可在 R-forge 上获得(几小时内可在 Github 上获得;参见 How do I install the latest version of 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)

产生这个显示(经过一些调整大小和旋转):

【讨论】:

【参考方案2】:

虽然不完美,但是用字母 a-w 来区分组怎么样?

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

【讨论】:

感谢您的提示!现在好多了。 评论不应该用来表示感谢 - 如果答案有用,请点赞和/或接受它【参考方案3】:

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

【讨论】:

以上是关于在 rgl R 包的 plot3d 函数生成的 3D 图上使众多组易于区分的主要内容,如果未能解决你的问题,请参考以下文章

R:rgl 包的 writePLY 函数未正确写入顶点颜色

如何导出交互式 rgl 3D 绘图以共享或发布?

[R中具有渲染图像的3D图[关闭]

R plot3d颜色渐变图例

R:将rgl小部件组合并保存为单个html文件

R rgl text3d() 工件块对象并更改绘图范围