2013-05-02 74 views
1

我正在嘗試生成具有分類X軸和兩個不同Y軸的條形圖。我試圖用twoord.plot生成柱狀圖如下:具有分類X軸的Barplot

x <- c("A","B","C","D","E") 
ry <- c(0.1,0.2,0.3,0.4,0.5) 
ly <- c(0.15,0.25,0.35,0.45,0.55) 
library(plotrix) 
twoord.plot(x,ry,x,ly, 
      xlab="xLabel", 
      ylab="yLabel", 
      rylab="ryLabel", 
      main="Main", 
      type=c("bar","l"),lcol=rainbow(length(x)),rcol=4) 

不過,我得到一個錯誤「在plot.window錯誤(...):無效‘XLIM’價值」。

有沒有辦法使用分類/字符變量作爲x軸?另外,有沒有辦法旋轉X軸標籤,使其顯示在45度?

我已經能夠得到這個代碼有以下變化工作:

xNumeric <- seq(1:length(x)) 
twoord.plot(xNumeric,ly,xNumeric,ry, 
       xlab="xLabel", 
       ylab="yLabel", 
       rylab="ryLabel", 
       main="Main", 
       type=c("bar","o"),lcol=rainbow(length(x)),rcol = 4,xticklab = x) 

但是,我仍然需要弄清楚如何使X軸標籤,以及添加一個傳奇分化在箱形圖和哪個線圖之間。任何幫助,將不勝感激

謝謝。

+0

這是一個古老的問題,但只是爲了記錄這裏的答案:X軸變量需要一個因素。如果它是'string'類型,則會出現錯誤。因此,在調用'as.factor(...)'的時候,只需圍繞x軸想要的任何字符串向量,標準的'plot()'R命令就可以工作。對於其他繪圖庫則取決於它們各自的實現。 – 2015-04-25 13:39:01

回答

1

這不是plotrix,但是......

ry <- c(0.1,0.2,0.3,0.4,0.5) 
ly <- c(15,35,65,75,80) 
x <- 1:5 
xlabs <- c("A","B","C","D","E") 
barplot(ly, xaxt="n", yaxt="n", xlab="xLabel", ylab="lyLabel", ylim=c(0,100)) 
axis(2, seq(0,100,by=5), seq(0,100,by=5), las=2) # you can adjust positions of ly labels 
par(new=TRUE) 
plot(ry~x, xaxt="n", yaxt="n", xlab="", ylab="", ylim=c(0,1)) 
axis(1, 1:5, xlabs) 
axis(4, 1:10/10, 1:10/10, las=2) # you can adjust positions of ry labels 
mtext("ryLabel", 4, line=2) 

而且你顯然需要編輯一個有點讓你似乎是想爲顏色等。

+0

謝謝,托馬斯。你的解決方案似乎只在ry和ly都具有相似的尺度時才起作用。我嘗試了以下兩個示例。既不工作也不工作(0.1,0.2,0.3,0.4,0.5) ly < - c(15,35,65,75,80)ry < - c(0.1,0.2,0.3,0.4,0.5) ly < - c(0.5,1.5,2,5,6) – Ravi 2013-05-02 12:03:42

+0

對不起,這取決於'axis(2,...)'在代碼中的位置。我編輯過它。只要你在兩次劇情調用中指定'ylim',你都應該能夠適應任意維度的情節。 – Thomas 2013-05-02 12:09:25

+0

剛剛嘗試過...... y軸刻度線完全出現在ly和ry向量中指定的值處。這導致ly的間隔值爲奇數。我已經能夠使用two.plot來獲得解決方案並更新了原始文章。 – Ravi 2013-05-02 12:29:09