2016-10-22 22 views
1

我在這個論壇上搜索,但我發現每個分組條形圖都是基於列上的分組。不過,我已經使用Java來我的數據結合在一起,但我不知道如何分組條形圖中繪製這樣的數據: 如何創建矩陣(我西港島線省略所有代碼保持簡單):製作此數據的分組條形圖

MAT2 = matrix(data, ncol=2) 
MAT2 = cbind(MAT2,kolommen) 
colnames(MAT2) <- c("mpk6","mpk3","group") 

這給了我:

 mpk6 mpk3 group     
    [1,] "9" "0" "membrane"    
    [2,] "91" "64" "plastid"    
    [3,] "12" "0" "extracellular region" 
    [4,] "74" "21" "thylakoid"   
    [5,] "6" "0" "vacuole"    
    [6,] "21" "33" "cytosol"    
    [7,] "4" "0" "plasma membrane"  
    [8,] "9" "12" "peroxisome"   
    [9,] "0" "0" "mitochondrion"  
    [10,] "22" "13" "nucleolus"   
    [11,] "0" "0" "ribosome"    
    [12,] "27" "31" "cell wall" 

但是,當我繪製這個使用barplot我得到以下結果: enter image description here
酒吧是基於MPK6和MPK3分組,但我想組「膜」,」質體「,」胞外區「等。:
enter image description here
我不知道這是否是可能的,但如果它是這將是很好,只是刪除高度0的酒吧,所以沒有那麼多空白圖中的(但也許這將ruine的整體思路分組的條形圖,所以如果有最好的選擇建議他們歡迎!)

+0

挺有意思的,除去高度0 –

回答

1

假設你的數據在一個名爲A的數據框中,或者它可以被強制爲一個data.frame,這是我的第一個猜測使用tidyrdplyrggplot2庫:

A <- gather(A, mpk, n, mpk6:mpk3) 

ggplot(A %>% filter(n > 0) %>% mutate(group=droplevels(group)), 
     aes(x=group, y=n, group=mpk, fill=mpk)) + 
geom_bar(position='dode', stat='identity') + 
coord_flip() 

空白不再可見,卜t各自條的寬度,而不管有多少不同MPK-n次測量的固定與它相關聯

bar-plot of data supplied with variable width bars

另一種選擇是,如果你希望的條的寬度是相同的(但有更圖中的空白)

ggplot(A %>% filter(n > 0) %>% mutate(group=droplevels(group)) %>% 
     group_by(group) %>% mutate(m=n()), 
     aes(x=group, y=n, group=mpk, fill=mpk, width=0.9*m/max(m))) + 
geom_bar(position=position_dodge(width=0.9), stat='identity') + 
coord_flip() 

alternative bar-plot of data with bar-width constant but whitespace appears when groups have different numbers of members as the distance between groups is constant

+0

酒吧目前還不清楚要如何分組工作,小格是我是如何理解它,但你ç可以很容易地在'geom_bar()' – stephematician

+0

Thankyou中使用'position ='dodge''組合圖表,但我希望它們被分組爲我在問題中顯示的第二個數字,因此MPK6的藍色和MPK3的紅色例如 – Bioinformatician

+0

因此,不是兩個獨立的地塊,但實際上你創建的兩個地塊組合成一個 – Bioinformatician