• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    alphafold2培训

    alphafold2培训

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      alphafold2培训

      alphafold2培训

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      生信星球

      • 首页
      • 博客
      • 生信星球
      • ggplot2的x轴坐标顺序不对肿么办

      ggplot2的x轴坐标顺序不对肿么办

      • 发布者 weinfoeditor
      • 分类 生信星球
      • 日期 2020年8月27日
      测试开头

      ggplot2的x轴坐标顺序不对肿么办ggplot2的x轴坐标顺序不对肿么办 历史文章ggplot2的x轴坐标顺序不对肿么办


         大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~

         就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~

         这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!

      起因

      这是一个天朗气清的日子。我正无聊的翻看着聊天记录,突然一道题出现在我的视野里:

      ggplot2的x轴坐标顺序不对肿么办


      图是这样的:

      ggplot2的x轴坐标顺序不对肿么办


      顿时精神起来,思路哗啦啦的出现。


      思路

      1.这图应该是ggplot2,theme_bw主题的箱线图(geom_boxplot())。
      2.模拟作图的数据:x轴是染色体,y轴数字用随机数,范围大概在0-3之间。
      3.重点是怎么调整x轴的顺序让它按照数字排列,而非默认的ASCII
      码排序,我搜到了这个网页,虽然图已经挂了, 但是代码还活着:https://blog.csdn.net/weixin_34006468/article/details/87741179
      4.作为锦上添花的一笔,可以把那个红点也加上去,大概是个平均值吧。需要计算平均值,然后叠加图层(点图)。这个形状我在R数据科学第一章见过:

      ggplot2的x轴坐标顺序不对肿么办


      不就是那个23嘛。


      代码实现

      step1:模拟数据&数据清理

      x=matrix(rnorm(2200,mean=1.5,sd = 0.2),ncol = 22)
      test=as.data.frame(x)
      colnames(test)=paste0("chr",1:22)
      head(test,3)
      ##       chr1     chr2      chr3     chr4     chr5     chr6     chr7     chr8
      ## 1 1.735900 1.592964 1.5357012 1.509799 1.427116 1.731629 1.577542 1.437874
      ## 2 2.044522 1.188158 1.5777756 1.402124 1.288738 1.469201 1.608938 1.541404
      ## 3 1.236109 1.281460 0.9248059 1.557471 1.854517 1.400657 1.499865 1.633099
      ##       chr9    chr10    chr11    chr12    chr13    chr14    chr15    chr16
      ## 1 1.419864 1.473799 1.533877 1.634162 1.187985 1.277067 1.556884 1.439447
      ## 2 1.319382 1.416500 1.576769 1.233425 1.689680 1.365171 1.277405 1.845788
      ## 3 1.243472 1.573978 1.477648 1.610831 1.643301 1.218138 1.457112 1.577818
      ##      chr17    chr18    chr19    chr20    chr21    chr22
      ## 1 1.182395 1.399263 1.317782 1.372491 1.276228 1.331798
      ## 2 1.486231 1.443116 1.864301 1.407559 2.028096 1.357263
      ## 3 1.411519 1.576395 1.794003 1.456685 1.141306 1.664034

      可以粗暴的直接做图:

      boxplot(test)
      ggplot2的x轴坐标顺序不对肿么办
      要用ggplot2就需要扁变长,用gather函数来做:

      if(!require(tidyr)) install.packages("tidyr")
      ## Loading required package: tidyr

      #
      # Warning: package 'tidyr' was built under R version 3.5.3
      library(tidyr)
      test2 <- gather(test,key = "chr",value = "values")
      head(test2,3)
      ##    chr   values
      ## 1 chr1 1.735900
      ## 2 chr1 2.044522
      ## 3 chr1 1.236109

      翻了一下以前的笔记,怎么画箱线图,怎么把横坐标调成倾斜的(目的是防重叠) https://www.jianshu.com/p/666de30161b2

      如果直接做图,就会和题目中的图一样,注意看x轴顺序

      if(!require(ggplot2)) install.packages("ggplot2")
      ## Loading required package: ggplot2
      library(ggplot2)

      p1 <- ggplot(test2,aes(x = chr, y = values)) + 
        geom_boxplot()+
        theme_bw()+
        theme(axis.text.x = element_text(angle=50,vjust = 0.5))
      p1
      ggplot2的x轴坐标顺序不对肿么办

      step2:改x轴坐标顺序,不是改图,而是改作图的数据

      ⭐重点就是这里:要把x轴对应的那一列变成因子,按照你想要的顺序排序 :

      table(test2$chr)
      ## 
      ##  chr1 chr10 chr11 chr12 chr13 chr14 chr15 chr16 chr17 chr18 chr19  chr2 
      ##   100   100   100   100   100   100   100   100   100   100   100   100 
      ## chr20 chr21 chr22  chr3  chr4  chr5  chr6  chr7  chr8  chr9 
      ##   100   100   100   100   100   100   100   100   100   100
      test2$chr <- factor(test2$chr,levels=paste0("chr",1:22),ordered = TRUE)

      调完再做图:

      p1 <- ggplot(test2,aes(x = chr, y = values)) + 
        geom_boxplot()+
        theme_bw()+
        theme(axis.text.x = element_text(angle=50,vjust = 0.5))
      p1
      ggplot2的x轴坐标顺序不对肿么办

      step3:把红点那个图层加上

      这个可能不怎么好理解,图层叠加是可以换数据的。还有,形状颜色分为边框和填充,分别用color和fill这两个参数,尺寸大小,用size,作图就像驴拉磨,一圈一圈调。

      y=data.frame(mean=apply(test, 2, mean))
      if(!require(tibble))install.packages("tibble")
      library(tibble)
      y=rownames_to_column(y,var="chr")
      p1+geom_point(data = y,aes(x=chr,
                                 y=mean),
                    shape=23,
                    fill="red",
                    color="black",
                    size=3)
      ggplot2的x轴坐标顺序不对肿么办


      下面是我们主营的三个课程:

      生信零基础入门学习小组

      全国巡讲全球听(生信线上直播课,长期开班)

      数据挖掘线上班(两天变三周,实力加量,长期开班)

      第一个是豆花个人开设的一周线上学习。第二、三个是公司的产品,3或4周的线上直播课,也是花花的正式工作内容。三篇推文里面都有花花的微信二维码,如果你也徘徊在生信的门外,不妨试试被我们推/拉/拖/拽着能不能进去O(∩_∩)O哈哈~


      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoeditor

      上一篇文章

      七夕,豆豆和花花买了一个小玩具,然后...
      2020年8月27日

      下一篇文章

      如何用Conda安装GATK?
      2020年9月2日

      你可能也喜欢

      8-1651673488
      生信零基础入门学习小组长期报名中(2022仍继续)
      7 4月, 2022
      2-1651673738
      简化版的ROC曲线
      21 2月, 2022
      8-1651674718
      支持向量机模型
      19 11月, 2021

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      白介素-17受体信号的自主激活,维持炎症并促进疾病进展
      048月2023
      MCT4依赖的乳酸分泌抑制LKB1缺陷肺腺癌的抗肿瘤免疫
      187月2023
      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?