• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

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

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

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

      生信星球

      • 首页
      • 博客
      • 生信星球
      • 鱼与熊掌兼得:ggplot2非要截断纵坐标肿么办

      鱼与熊掌兼得:ggplot2非要截断纵坐标肿么办

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

       今天是生信星球陪你的第609天


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

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

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

      花花写于2020-4-28。今天有两件特别高兴的事情,一个是昨晚发的萝卜找坑帖子,发出去六分钟就有一位中国中医科学院中药研究所的导师联系我提供坑位;另一个是刚刚收到了数据挖掘班第一期学员(一位北大的硕士)的2600字长文反馈!她从零开始跟我们团队学习,收获颇多,我收到她如此用心反馈也高兴地快要跳起来了~等我排版一下发给大家看~~~数据挖掘线上班适用于广大医生和医学生,如有需求报名请戳:数据挖掘第2期(两天变三周,实力加量)

      前情提要

      ggplot2不能截断纵坐标肿么办 讲了几种截断方法,各有长短,我在这篇文章发出去后收到两个反馈,特来与大家分享~

      新方法1.拼图

      出处:https://huifangliu.github.io/2018/06/01/R语言-ggplot2画图如何截断-y-轴/

      鱼与熊掌兼得:ggplot2非要截断纵坐标肿么办


      实现从A到B,上下两部分图画出来,然后拼到一起即可


      (1)举重若轻三步走

      #导入包
      library(ggplot2)
      library(ggpubr)
      #数据
      data <- data.frame(x = c("Alpha","Bravo","Charlie","Delta"),y=c(200,20,10,15))
      #画下面
      p1 <- ggplot(data,aes(x=x,y=y,fill=x)) + 
        geom_bar(stat='identity',position=position_dodge()) +
        labs(x=NULL,y=NULL,fill=NULL)+    #可自定义标签名字
        coord_cartesian(ylim = c(0,25))    #设置下面一半的值域
      #画上面
      p2 <- ggplot(data,aes(x=x,y=y,fill=x)) + geom_bar(stat='identity',position=position_dodge()) +
        labs(x=NULL,y=NULL,fill=NULL) +    #不要标签
        theme(axis.text.x = element_blank(),axis.ticks.x = element_blank()) +     #去掉X轴和X轴的文字
        coord_cartesian(ylim = c(195,205)) +  #设置上面一半的值域
        scale_y_continuous(breaks = c(195,205,5))    #以5为单位划分Y轴
      #拼起来
      ggarrange(p2,p1,heights=c(1/5, 4/5),ncol = 1, nrow = 2,common.legend = TRUE,legend="right",align = "v")
      鱼与熊掌兼得:ggplot2非要截断纵坐标肿么办

      重点在于:设置y轴值域,设置p2的刻度、不要x轴标签和名字,以及拼图设置高度比。

      (2)patchwork拼图也很可

      library(patchwork)
      p2 <- ggplot(data,aes(x=x,y=y,fill=x)) + geom_bar(stat='identity',position=position_dodge()) +
        labs(x=NULL,y=NULL,fill=NULL) +    #不要标签
        theme(axis.text.x = element_blank(),axis.ticks.x = element_blank(),legend.position = "none") +     #去掉X轴和X轴的文字
        coord_cartesian(ylim = c(195,205)) +  #设置上面一半的值域
        scale_y_continuous(breaks = c(195,205,5))    #以5为单位划分Y轴


      layout <- '
      A
      B
      B
      B
      B
      '
      p2 + p1 + plot_layout(design = layout)
      鱼与熊掌兼得:ggplot2非要截断纵坐标肿么办

      2.新方法2:gg.gap包

      上次的文章发出去后,gg.gap包的作者chris_lou给我留言,可以用他的包!我一看,果然是非常好用!

      分享能带来什么呢,曾以为就是自己记录下来,印象深刻,顺便可以帮助一下别人。这次不一样,有被帮助到!感谢大佬!

      下面的代码来自包的帮助文档,套在刚才的数据上。

      #install.packages(gg.gap)
      library(gg.gap)
      library(ggplot2)
      library(patchwork)
      #数据
      data <-
        data.frame(x = c("Alpha", "Bravo", "Charlie", "Delta"),
                   y = c(200, 20, 10, 15))
      #画图
      p1 = ggplot(data, aes(x = x, y = y, fill = x)) +
        geom_bar(stat = 'identity', position = position_dodge(),show.legend = FALSE) +
        theme_bw() +
        labs(x = NULL, y = NULL)

      p1
      p2 =gg.gap(plot = p1,
                 segments = c(25, 190),
                 tick_width = 10,
                 rel_heights = c(0.25, 0, 0.1),
                 ylim = c(0, 200)
                 )
      p1+p2
      鱼与熊掌兼得:ggplot2非要截断纵坐标肿么办

      segments是表示切分位置的向量,tick_width是刻度单位,rel_height表示切分成的两段它的高度比例。高度比例可以多次调整,让上下两部分看起来整体度高一些。

      和上面的方法是相似的~但是做成包更香!

      插个小广告!

      生信零基础入门学习小组

      全国巡讲全球听(生信线上直播课)

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

      一起来学单细胞吗?

      测试结尾

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

      • 分享:
      作者头像
      weinfoeditor

      上一篇文章

      limma前瞻
      2020年4月28日

      下一篇文章

      TCGA 甲基化芯片数据下载和整理
      2020年4月30日

      你可能也喜欢

      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年
      在线支付 激活码

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