在R中,
library(rgl)
m <- matrix(rnorm(300),100,3)
par3d(ignoreExtent=F)
plot3d(m,box=T,axes=F,xlab='',ylab='',zlab='')
axes3d(labels=F,tick=F,box=F)
gr <- grid3d('z')
par3d(ignoreExtent=T)
plot3d(cbind(m[,1:2],rgl.attrib(gr[1],'vertices')[1,3]),col='gray',add=T)
仍打印带有数字的刻度:
tick=F
中的axes3d()
参数是否应该删除刻度线和数字?
我想在图表的底部添加x和y轴,而不是在顶部。此外,当我使用axis3d()
添加它们时,刻度线不再正交,但相对于它们的平面倾斜45度,我认为这很难看。
par3d(ignoreExtent=F)
plot3d(m,box=T,axes=F,xlab='',ylab='',zlab='')
box3d()
axis3d('x--',labels=T,tick=T)
axis3d('y+-',labels=T,tick=T)
axis3d('z++',labels=T,tick=T)
gr <- grid3d('z')
par3d(ignoreExtent=T)
plot3d(cbind(m[,1:2],rgl.attrib(gr[1],'vertices')[1,3]),col='gray',add=T)
如果我必须采取第二种方式,如何摆脱盒子的前线?或者是否有另一种方法可以在所需位置打印默认刻度线(正交)?
答案 0 :(得分:1)
rgl
中的轴有点令人困惑,而且不够灵活。首先,有两种不同的类型:axis3d
绘制的那些,以及rgl.bbox
绘制的那些。只有第一种类型注意tick
参数,而您的第一个示例使用第二种类型。
您可以通过设置rgl.bbox
来删除marklen = 0, marklen.rel = FALSE
轴中的刻度线,但这样做会产生令人遗憾的效果,即将数字放在方框上。没有单独的参数来控制数字的位置,而与tickmark长度无关。如果您根本不需要数字,请使用xlen = 0, ylen = 0, zlen = 0
。
axis3d
轴也不是很灵活。如果要更改其方向,则需要修改该功能。 mpos
数组保存每个tick的坐标;改变它以使刻度指向您想要的方式。
关于方框:如果您使用box3d()
来绘制它,则会修复此问题。如果您想要rgl.bbox
样式,则必须使用该功能。您也可以使用segments3d()
和mtext3d()
来构建自己的轴,但它们不会像rgl.bbox
轴一样移动。