2011-12-16 258 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的範圍根本不是你用那些小的價值提供的,所以你需要接受這個現實。如果你想重新標註比例,那麼我已經告訴你如何去做。