畫圖的時候,排序是個很重要的技巧,比如有時候會看下基因組每條染色體上的SNP的標記數量,這個時候直接做條形圖是一種比較直觀的方法,下面我們結合實際例子來看下:
在R環境下之際構建一個數據框,一列染色體名稱,一列統計數據。
1 chr<-paste("chr",c(1:18,"X","Y"),sep="") 2 set.seed(2) 3 num<-runif(20,100,5000) 4 df<-data.frame(chr=chr,num=num) 5 df
內容如下:
一、barplot()
我們直接用基礎繪圖函數barplot()畫圖,染色體順序是不會變化的:
1 barplot(t(as.matrix(df$num)),col="cyan",border = NA,names.arg = df$chr)
二、ggplot2
如果用ggplot2畫圖,染色體順序就不是我們想要的了:
1 library(ggplot2) 2 ggplot(df,aes(y=num,x=chr,fill=chr))+geom_bar(stat = 'identity')

我們可以利用factor進行因子排序,將順序調整成我們需要的樣子:
1 ggplot(df,aes(y=num,x=factor(chr,levels=(chr)),fill=chr))+ 2 geom_bar(stat = 'identity')

或者其他形式,這里我把X,Y染色體提前:
1 ggplot(df,aes(y=num,fill=chr, 2 x=factor(chr,levels=(paste("chr",c("X","Y",1:18),sep="")))))+ 3 geom_bar(stat = 'identity')

后續繼續做其他調整,如圖例順序調整。