如何随意截断ggplot2图像的y轴?

gg.gap诞生记

“站长,小站工具qPCR在线分析功能非常好,但有些基因的表达量太高了,图做出来值非常大,能否想prism那样把y轴做个截断呢?”
面对的疑问,站长最开始并没有想到去开发一个R包解决。
ggplot2以及依赖它开发的包已经丰富,原以为在网络搜索一下肯定有解决方案,但谁曾想这样的需求真的没有找到完美的解决方案。
为了完善这个看起来很平常的功能,站长决定亲自操刀去写个包。

路不平,大神助

一年的Coding经历,面对处理图形函数还是有点困难的。
不管三七二一,画个草图先:
如何随意截断ggplot2图像的y轴?
思路很简单,就是先按照y轴切,然后用cowplot去拼接。
一顿野路子代码操作,beta版出来了:gg1gapgg2gap这两个包只能完成bar图y轴切割,而截断数最多也就只能两段。
小站VIP群中的树神(微信ID:一棵树)精通R包制作,为了让野路子出来的代码更完善,拉上树神一起干,不仅实现截取多个截断,还可以对任意ggplot2对象进行截断,再不断测试修补bug之后,gg.gap终于在今天这个有意义的日子正式上线CRAN。大家可以通过下面的代码进行安装。
install.packages("gg.gap")

都能切什么图,切几段

理论上,ggplot2的图都能切,想切几段切几段。
以Bar图为例
如何随意截断ggplot2图像的y轴?
切一段
如何随意截断ggplot2图像的y轴?
切两段
如何随意截断ggplot2图像的y轴?
切三段
如何随意截断ggplot2图像的y轴?
切N段
如何随意截断ggplot2图像的y轴?
切散点图
如何随意截断ggplot2图像的y轴?
切折线图
如何随意截断ggplot2图像的y轴?
切Boxplot+jitter
如何随意截断ggplot2图像的y轴?
#installinstall.packages("gg.gap")data(mtcars)library(ggplot2)p<-ggplot(data = mtcars, aes(x = gear, fill = gear)) + geom_bar() + ggtitle("Number of Cars by Gear") + xlab("Gears")
#single segments and missing tick_widthgg.gap(plot=p, segments=c(5,10), ylim=c(0,50))#tick_width can be one or more numbersgg.gap(plot=p, segments=c(5,10), tick_width = c(1,10), ylim=c(0,50))#segments list cantains more than one number vectorsgg.gap(plot=p, segments=list(c(2.5,4),c(5,10)), tick_width = c(1,0.5,10), ylim=c(0,50))#rel_heights can set the relative height for segments and segmented y-axisgg.gap(plot=p, segments=list(c(2.5,4),c(5,10)), tick_width = c(1,0.5,10), rel_heights=c(0.2,0,0.2,0,1), ylim=c(0,50))#reversed y-axisp<-ggplot(data = mtcars, aes(x = gear, fill = gear)) + geom_bar() + ggtitle("Number of Cars by Gear") + xlab("Gears")+ scale_y_continuous(trans = 'reverse')#single segments and missing tick_widthgg.gap(plot=p, segments=c(10,5), ylim=c(15,0))#add.legendlibrary(ggplot2)mtcars$gear <- factor(mtcars$gear)bp <- ggplot(data = mtcars, aes(x = gear, fill = gear)) + geom_bar() + ggtitle("Number of Cars by Gear") + xlab("Gears")gg.gap(plot = bp, ylim = c(0,16), segments = c(6,8))add.legend(plot = bp, margin = c(top=1,right=1,bottom=1,left=460))

猜你喜欢

10000+:菌群分析 宝宝与猫狗 梅毒狂想曲 提DNA发Nature Cell专刊 肠道指挥大脑

系列教程:微生物组入门 Biostar 微生物组  宏基因组

专业技能:学术图表 高分文章 生信宝典 不可或缺的人

一文读懂:宏基因组 寄生虫益处 进化树

必备技能:提问 搜索  Endnote

文献阅读 热心肠 SemanticScholar Geenmedical

扩增子分析:图表解读 分析流程 统计绘图

16S功能预测   PICRUSt  FAPROTAX  Bugbase Tax4Fun

在线工具:16S预测培养基 生信绘图

科研经验:云笔记  云协作 公众号

编程模板: Shell  R Perl

生物科普:  肠道细菌 人体上的生命 生命大跃进  细胞暗战 人体奥秘  

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外5000+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。PI请明示身份,另有海内外微生物相关PI群供大佬合作交流。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍未解决群内讨论,问题不私聊,帮助同行。

如何随意截断ggplot2图像的y轴?

学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

如何随意截断ggplot2图像的y轴?点击阅读原文,跳转最新文章目录阅读

生物医学科研方法

强烈建议每个科研人做下这个测评,找到你的优势!

2020-12-17 2:55:15

生物医学科研方法

Science:固氮(The nitrogen fix)

2020-12-17 3:05:44