2016-07-27 91 views
0

我在多軸barplot有麻煩。我在同一個圖中有一個帶有條和點的X,Y軸。重點是我必須在不同比例下顯示它們兩個分數R在R barplot

雖然我可以正確顯示兩個(條和點),但是當我嘗試在左右軸上設置不同比例時,問題就出現了。我不知道如何改變附屬軸的比例尺,以及如何將紅色圓點綁定到右側的軸上,以及如何將條形圖綁定到左側的軸上。

這是我的代碼和我所得到的:

labels <- value 
mp <- barplot(height = churn, main = title, ylab = "% churn", space = 0, ylim = c(0,5)) 
text(mp, par("usr")[3], labels = labels, srt = 45, adj = c(1.1,1.1), xpd = TRUE, cex=.9) 

# Population dots 
points(popul, col="red", bg="red", pch=21, cex=1.5) 

# Churn Mean 
media <- mean(churn) 
abline(h=media, col = "black", lty=2) 

# Population scale 
axis(side = 4, col= "red") 

ylim= c(0,50)

ylim= c(0,5)

我想是已經離開(灰色)軸在ylim = C(0,5)並將這些條綁定到該軸。 ylim = c(0,50)處的右側(紅色)軸線與該軸線相關的點... 目標是用不同軸表示同一圖形中的條形和點。

希望我解釋了我自己的成功。 感謝您的協助!

+0

看看在「新」的設置'par' - ?你想畫兩個地塊,並通過設置「新」爲TRUE包裹。 – dayne

回答

0

這是一個玩具的例子。唯一的「技巧」是創建條形圖時存儲條形中心的x位置和x軸的界限,以便您可以覆蓋具有相同x軸的繪圖並將點添加到條形中心。呼叫plot.windowxaxs = "i"表示使用給定的確切值,而不是通過常量(缺省行爲)擴展。

set.seed(1234) 
dat1 <- sample(10, 5) 
dat2 <- sample(50, 5) 
par(mar = c(2, 4, 2, 4)) 
cntrs <- barplot(dat1) 
xlim0 <- par()$usr[1:2] 
par(new = TRUE) 
plot.new() 
plot.window(xlim = xlim0, ylim = c(0, 50), xaxs = "i") 
points(dat2 ~ cntrs, col = "darkred") 
axis(side = 4, col = "darkred") 

enter image description here

+0

謝謝它真的幫助了我。但是,我發現右側(紅色)軸在X軸上方超過2milimetres。有什麼參數可以調整嗎? – Akiru

+0

是的。在定義'ylim'時只需要明確,然後在創建軸時指定'at'。 – dayne