zoukankan      html  css  js  c++  java
  • 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

    后续继续做其他调整,如图例顺序调整。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    LeetCode-Maximum Gap
    LintCode-Implement Queue by Stacks
    LintCode-Search Range in Binary Search Tree
    LintCode-BackPack II
    LintCode-Minimum Subarray
    LintCode-Sort Letters by Case
    LintCode-Longest Common Subsequence
    POJ 2226
    POJ 2724
    POJ 3692
  • 原文地址:https://www.cnblogs.com/mmtinfo/p/12039757.html
Copyright © 2011-2022 走看看