2012-02-01 73 views
2

我的數據集是這樣的:條形圖中ggplot與不同數量的酒吧每組

`DSET<-data.frame(cbind(c(rep("V1",3),rep("V2",3),"V3"), 
         c(rep(c("X1","X2","X3"),2),"X1"), 
         c(rep(1,7))))`  
`names(DSET)<-c("A","B","C")`  
`DSET[,3]<-c(1,-2,1,3,-1,2,-3)` 

有三個分組變量(V1,V2,V3)和每組三個變量(X1,X2,X3)。問題是組3(V3)只有一個變量(X1),但缺少另外兩個變量。如果我想製作一個條形圖,現在一切正常,儘管第3組的欄比第一組和第二組的欄大三倍。

`Grph<-ggplot(DSET,aes(x=A,y=C,fill=B))`  
`dodge <- position_dodge(width=0.9)`  
`Grph+geom_bar(position=dodge)` 

我試圖與缺乏組和X2和X3的值0添加兩行和它的工作原理有點。

`DSET<-data.frame(cbind(c(rep("V1",3),rep("V2",3),rep("V3",3)), 
         c(rep(c("X1","X2","X3"),3)),c(rep(1,9))))`  
`names(DSET)<-c("A","B","C")`  
`DSET[,3]<-c(1,-2,1,3,-1,2,-3,0,0)` 

`Grph<- ggplot(DSET,aes(x=A,y=C,fill=B))`  
`dodge <- position_dodge(width=0.9)`  
`Grph+geom_bar(position=dodge)` 

但我真的想實現的是,根據每個組都有通過保持線條的寬度不變的條數調整組大小的圖。有沒有辦法做到這一點?

期待您的幫助!

回答

2

如果我正確理解你的問題,你想要的空間分配給「V3」量小於分配到「V1」和「V2」,因爲在「V3」只有一個「X」的空間,你想要每個代表「X」的酒吧的寬度是相同的?如果是這樣,你可以使用方面得到這個,但不能用簡單的x尺度。

首先,一個簡單的方法來創建兩個數據幀(並給予他們不同的名字):

DSET <- data.frame(A=c(rep("V1",3),rep("V2",3),"V3"), 
        B=c(rep(c("X1","X2","X3"),2),"X1"), 
        C=c(1,-2,1,3,-1,2,-3)) 

DSET2 <- data.frame(A=rep(c("V1","V2","V3"), each=3), 
        B=rep(c("X1","X2","X3"), times=3), 
        C=c(1,-2,1,3,-1,2,-3,0,0)) 

你的兩個圖:

Grph <- ggplot(DSET, aes(x=A, y=C, fill=B)) + 
    geom_bar(position=position_dodge(width=0.9)) 
Grph 

enter image description here

Grph %+% DSET2 

enter image description here

爲了得到像你想用什麼方面,使用方法:

ggplot(DSET, aes(x=B, y=C, fill=B)) + 
    geom_bar(position=position_dodge(width=0.9)) + 
    facet_grid(.~A, scale="free_x", space="free") 

enter image description here

+0

謝謝布賴恩!我實際上在使用facet_grids之前嘗試過使用aes(x = A,y = C,fill = B),它給出了與第一個圖形相同的結果。但現在它起作用了,太棒了!你也知道如何使用geom_abline在x = 0 w/o處繪製一條線嗎? geom_abline將線條略微拉高,使其看起來很奇怪,特別是在我的真實圖形中,我有誤差條,直到x = 0。 – Latrunculia 2012-02-02 09:34:45

+0

我解決了它:我必須指定斜率和截距而不是x = 0。不過,我想知道它會發生什麼變化。 Ps .:順便說一句 - 感謝您的代碼編輯! – Latrunculia 2012-02-02 09:44:42

+0

你也可以考慮'geom_hline(yintercept = 0)'爲水平線。 – 2012-02-02 16:23:10

相關問題