2014-10-01 19 views
1

我試圖製作一個「反向堆疊條形圖」,並且發現從plotrix包中找到pyramid.plot似乎是做了這項工作。 (我讚賞ggplot2將成爲你們中的一些人的前往解決方案,但我希望堅持在這一個base圖形。)在pyramid.plot中設置xlim後的奇數軸標籤行爲[plotrix]

不幸的是,它似乎做了一個奇怪的事情與X軸,當我嘗試將限制設置爲非整數值。如果我讓它自動定義限制,它們是整數,在我的情況下,只留下太多的空白。但將它們定義爲xlim=c(1.5,1.5)會產生下面的奇怪結果。

如果我從文檔正確理解,沒有辦法通過對附加的圖形參數例如抑制軸並在稍後添加,或者更不用說定義滴答點等等。有沒有辦法讓它更靈活?

這裏是一個最小的工作示例,用於生成下面的圖。

require(plotrix) 
set.seed(42) 
pyramid.plot(cbind(runif(7,0,1), 
        rep(0,7), 
        rep(0,7)), 
      cbind(rep(0,7), 
        runif(7,0,1), 
        runif(7,0,1)), 
      top.labels=NULL, 
      gap=0, 
      labels=rep("",7), 
      xlim=c(1.5,1.5)) 

enter image description here

萬一它是感興趣的其他任何人,我沒有做一個人口金字塔,而是試圖與一些消極價值觀的堆積條形圖。上面的代碼包含了一個'技巧',我使用它可以在每一邊都有不同數量的條形圖,即向矩陣中添加空列,希望有人會發現它有用 - 很抱歉,這個工作示例不是儘可能小!

回答

2

設置使用laxlabraxlab x軸標籤產生連續軸:

pyramid.plot(cbind(runif(7,0,1), 
        rep(0,7), 
        rep(0,7)), 
      cbind(rep(0,7), 
        runif(7,0,1), 
        runif(7,0,1)), 
      top.labels=NULL, 
      gap=0, 
      labels=rep("",7), 
      xlim=c(1.5,1.5), 
      laxlab = seq(from = 0, to = 1.5, by = 0.5), 
      raxlab=seq(from = 0, to = 1.5, by = 0.5)) 

enter image description here

+0

我如何過成功地錯過,我不知道..我是正確的假設雖然這我不能玩蜱等?這很好,例如如果'xaxt =「n」'工作。 – maja 2014-10-01 15:18:47

+1

許多使用'base' R plot機器的繪圖函數都有'...'參數。例如,'plot.default':'其他圖形參數(參見'par'「或'?plot.lm'」要傳遞到繪製函數的其他參數。「.' pyramid.plot'似乎並不有這種可能性,即你不能在這個函數中使用'par'參數 – Henrik 2014-10-01 15:33:40

+0

是的,幸運的是它證明了整個pyramid.plot源代碼實際上非常簡單,所以我可以用它來重寫函數爲了我的目的,它使用'plot.default'和'rect',它們都有'...'參數,所以我可以禁止軸並添加我自己的,也可以改變例如堆棧的邊框顏色等。 – maja 2014-10-02 14:25:41