2011-12-16 195 views
2

我使用图6.15 here中的方法绘制R中的3D直方图。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轴,而不是仅仅对角被填充,但它示出了轴的问题。

+0

请添加一个可重复的例子。您链接到的页面包含几个图,格和ggplot2。避免含糊不清并添加示例数据集。 – 2011-12-16 10:20:55

+0

我注意到它是链接页面上的图6.15。 – FabbyRob 2011-12-16 12:46:28

回答

1

cloud的文档(lattice):

“在”给出的 分割点,其中的颜色改变

所以它需要一个载体,而不是名单矢量向量。你所得到的错误是由失败到您的向量列表转换成数字引起:

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

这些结果需要进一步的工作,但它确实满足您的要求,并告诉您什么是传递参数给“尺度”的名单意味着:

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的范围根本不是你用那些小的价值提供的,所以你需要接受这个现实。如果你想重新标注比例,那么我已经告诉你如何去做。