R 3D绘图轴刻度标签

时间:2011-12-16 09:59:37

标签: r graphics 3d cloud lattice

我正在使用图6.15 here中的方法在R中绘制3D直方图。

我设置了scale = list(箭头= F),因此我在每个轴上都有刻度线而不是箭头。

情节看起来很好,但我想更改轴刻度标签。我的x轴从1-26开始,我的从1-24开始,我的Z从0-8E-6开始。理想情况下,我希望在每个离散的x和y值上都有一个标签,然后在z轴上的某个合理间隔。

我尝试使用缩放选项'tick.number',但它似乎只取一个数字,或者使用列表中的第一个,所以如果我将它设置为26,我会在y轴上得到多余的刻度线,z轴看起来像垃圾。

我看到尺度上有'at'和'labels'选项,就像2D情节一样,但我似乎无法让它工作。文档表明它应该是每个面板的位置和标签的向量列表,所以我尝试了:

at = list(c(1:26), c(1:24), c(2*10^-6, 4*10^-6, 8*10^-6))

但它抱怨道:

(list) object cannot be coerces to type 'double'

我认为如果我弄清楚如何使用'at'那么'label'应该变得清晰。

编辑:

以下是示例代码:

library(latticeExtra)
Cg = 1:25
Cr = 1:25
freqs = rnorm(25, .5, .1)
cloud(freqs~Cg*Cr, xlim=c(27,-1), ylim=c(25,-1), panel.3d.cloud=panel.3dbars, par.settings=list(box.3d = list(col="transparent")), col.facet="grey",  scales=list(arrows=F))

我的数据具有不同长度的X和Y轴,而不仅仅是对角线被填充,但它显示了轴问题。

2 个答案:

答案 0 :(得分:1)

来自cloudlattice)的文档:

  

'at'给出了向量             颜色变化的切点

所以它需要是一个向量,而不是向量列表。您获得的错误是由于无法将矢量列表转换为数字:

at = list(c(1:26), c(1:24), c(2*10^-6, 4*10^-6, 8*10^-6))
> as.numeric(at)
Error: (list) object cannot be coerced to type 'double'

at参数描述颜色的变化位置,类似于levelplot。所以它只需要一个向量。

答案 1 :(得分:1)

这些结果需要进一步的工作,但它确实满足了您的要求,并向您展示将参数传递给' scale'作为清单:

cloud(freqs~Cg*Cr, xlim=c(27,-1), ylim=c(25,-1),zlim=c(0,1), # needed to add zlim
   panel.3d.cloud=panel.3dbars, par.settings=list(box.3d = list(col="transparent")), 
   col.facet="grey",  
   scales=list(arrows=F, x=list(at = c(1:26), lab=c(1:26)) , 
                         y=list(at= c(1:24),  lab=c(1:24)),
                  z= list(rot=20,   # to prevent over-riding the tick marks
                          at= c(.2,.4,.8) ,      # data spans larger range
                          lab=c("2*10^-6  ", "4*10^-6  ", "8*10^-6  ") )
       )       )

enter image description here

z的范围根本不是你提供的那些小值,所以你需要接受这个现实。如果你想重新标记比例,那么我已经向你展示了如何做到这一点。