R語言因子排序


畫圖的時候,排序是個很重要的技巧,比如有時候會看下基因組每條染色體上的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

內容如下:

image

一、barplot()

我們直接用基礎繪圖函數barplot()畫圖,染色體順序是不會變化的:

  1 barplot(t(as.matrix(df$num)),col="cyan",border = NA,names.arg = df$chr)

image

二、ggplot2

如果用ggplot2畫圖,染色體順序就不是我們想要的了:

  1 library(ggplot2)
  2 ggplot(df,aes(y=num,x=chr,fill=chr))+geom_bar(stat = 'identity')
image

我們可以利用factor進行因子排序,將順序調整成我們需要的樣子:

  1 ggplot(df,aes(y=num,x=factor(chr,levels=(chr)),fill=chr))+
  2   geom_bar(stat = 'identity')
image

或者其他形式,這里我把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')
image

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM