2015-09-02 44 views
1

當數據少於5列或行時,會出現虛擬網格。可以避免這種情況嗎?Scatterplot3d可以處理少於5列/行的數據嗎?

set.seed(123) 
my.mat <- matrix(runif(20), nrow = 4) 
dimnames(my.mat) <- list(LETTERS[1:4], letters[11:15]) 
s3d.dat <- data.frame(columns = c(col(my.mat)), 
        rows = c(row(my.mat)), value = c(my.mat)) 
scatterplot3d(s3d.dat, type = "h", lwd = 5, pch = " ", 
      x.ticklabs = colnames(my.mat), y.ticklabs = rownames(my.mat)) 

上面的代碼根據scattorplot3d小插圖的例子稍作修改,並會產生如下圖。

enter image description here

在y軸,有加入虛設網格和重複相應的標籤被覆蓋額外網格。任何想法來解決它?

+0

非常感謝,天哪! – xukun

+0

問題來了我認爲你從標籤中指定的值比「網格值」要小的多:試圖在不指定y.ticklabs的情況下繪製圖片,你會看到每0.5個點有一個刻度,所以你需要指定該軸只需要4個刻度 – Cath

+0

再次感謝CathG。我已經嘗試過,但仍然有額外的網格,我不知道要將此步驟從0.5增加到1以避免這種情況。仔細閱讀本手冊後,我發現了xlim,ylim和zlim:「繪圖的x,y和z範圍(最小值,最大值)。請注意,設置放大限制可能不會像預期的那樣正常工作但不固定的錯誤)。「 – xukun

回答

2

我會偷@ CathG的風頭,告訴你如何指定x和y刻度的數量。我指定的lab參數,指定上x和y蜱的數目

scatterplot3d(x, type = "h", lwd = 5, pch = " ", lab = c(length(colnames(my.mat)), length(rownames(my.mat))), 
       x.ticklabs = colnames(my.mat), y.ticklabs = rownames(my.mat)) 

的通知。 enter image description here

+0

哇,太神奇了!謝謝,兩者! – xukun

+0

@xukun如果答案解決了你的問題,考慮接受答案作爲正確答案(通過點擊分數下方的灰色複選標記)。 –

+0

謝謝,羅馬!我是新來的,只是意識到接受你的答案後應該做什麼。 – xukun