我有23个不同的组,每个组由7到20个单独的样本(总共大约350-400个观察结果)组成,它们有自己的x,y和amp; z坐标。我想通过plot3d
rgl
R
函数的pch
函数,根据我的数据生成3D图。一般而言,这不是什么大问题。问题是,我想让上面提到的23组中的每一组在3D图上容易区分。我尝试为每个组使用不同的颜色,但不幸的是,找不到人眼可以辨认的23种颜色。我正在考虑基本plot
库的R
函数中的plot3d
参数。但是,再次,我可以看到text3d
函数中没有这样的选项。此外,我必须解释一下,我的数据集中有太多的点,并且为每个点添加标签(例如,使用# 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函数)不是一个好主意(它们将彼此重叠并且给予在3D情节上导致某种混乱)。有没有办法搞清楚(我猜这是非常常见的问题)?提前谢谢!
下面是一些玩具示例的代码,以便更好地解释:
{{1}}
答案 0 :(得分:3)
如果你喜欢生活在最前沿,那么有一个新功能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)
生成此显示(在一些调整大小和旋转之后):
答案 1 :(得分:1)
答案 2 :(得分:0)
因为我打算将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)])