2016-11-05 50 views
-1

我嘗試使用R barplot功能繪製在同一張圖如下數組:情節對準barplots

ID 1 2 3 4 5 6 7 8 
HeL 0 2 1 4 2 3 2 4 
CaC 2 0 0 2 1 5 7 8 
NIH 1 2 5 6 3 5 7 9 

我需要有其自身的y各行的barplot軸,但所有行的x軸應該是通用的。到目前爲止,我所取得的成就,是從文件讀取「rna.tab」矩陣,然後分別繪製每一行:

dat <- read.table ("rna.tab", row.names=1, header=TRUE) 
barplot (as.matrix (dat[,1])) 
barplot (as.matrix (dat[,2])) 
barplot (as.matrix (dat[,3])) 

但我並沒有在策劃他們一起取得成功。 在此先感謝 - Arturo

+0

'library(tidyverse); df%>%rownames_to_column('ID')%>%gather(var,val,-ID)%>%ggplot(aes(var,val,fill = ID))+ geom_bar(stat ='identity',position ='道奇')'? – alistaire

回答

0

這是你在找什麼?如果不是,你可以做一個你想要的手動例子併發布圖像?

par(mfrow = c(ncol(dat),1), mar = c(2.5,4,1,1)) 
apply(dat, 2, barplot, beside = TRUE) 
par(mfrow = c(1,1)) 

第一par說你要儘可能多的行地塊的網格,有dat和1列的列,並改變劇情的利潤是適當的。 apply函數爲datbeside = TRUE的eash列創建條形圖,使列彼此相鄰。下一個par將繪圖網格重置爲單個圖形,因此下次需要繪製某些內容時,您不僅僅是製作一堆小圖。

+0

謝謝。但是,當我輸入第一行時,出現錯誤:par(mfrow = c((ncol(dat),1),mar = c(2.5,4,1,1))錯誤:意外','in「par (mfrow = c((ncol(dat),「 – Arturo

+0

對不起,流浪括號,現在修復。 – Barker

0

非常感謝Barker爲我解決了這個問題,並且很抱歉爲了回覆你,但我生病了差不多一個星期。 你的代碼工作的很好,唯一的是,因爲我需要繪製行而不是列,它應該是: apply(dat,1,barplot,beside = TRUE) 對不起,不清楚這一點。

我只有一個最後一個問題,如果你不介意。通常我的現實生活矩陣是6000 * 30。這意味着我必須繪製30行。 通常我將圖像保存到磁盤:

png ("plot.png") 
par(mfrow = c(ncol(dat),1), mar = c(2.5,4,1,1)) 
apply(dat, 1, barplot, beside = TRUE) 
dev.off() 

當我這樣做,我得到的,而不是所有行的情節只在文件「plot.png」最後的4行的情節。另外,由於所有地塊的x軸都相同,只能在最後繪製它?