2

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

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

情节看起来不错,但我想更改轴刻度标签。我的 x 轴从 1-26 开始,我的 y 从 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 轴,不仅填充了对角线,还显示了轴问题。

4

2 回答 2

1

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

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  ") )
       )       )

在此处输入图像描述

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

于 2011-12-16T14:34:43.080 回答
1

来自cloud( lattice) 的文档:

'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。所以它只需要一个向量。

于 2011-12-16T10:28:03.583 回答