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

gg.gap诞生记

“站长,小站工具qPCR在线分析功能非常好,但有些基因的表达量太高了,图做出来值非常大,能否想prism那样把y轴做个截断呢?”

面对的疑问,站长最开始并没有想到去开发一个R包解决。
ggplot2以及依赖它开发的包已经丰富,原以为在网络搜索一下肯定有解决方案,但谁曾想这样的需求真的没有找到完美的解决方案。
为了完善这个看起来很平常的功能,站长决定亲自操刀去写个包。

路不平,大神助

一年的Coding经历,面对处理图形函数还是有点困难的。
不管三七二一,画个草图先:

思路很简单,就是先按照y轴切,然后用cowplot去拼接。
一顿野路子代码操作,beta版出来了:gg1gap和gg2gap这两个包只能完成bar图y轴切割,而截断数最多也就只能两段。

小站VIP群中的树神(微信ID:一棵树)精通R包制作,为了让野路子出来的代码更完善,拉上树神一起干,不仅实现截取多个截断,还可以对任意ggplot2对象进行截断,再不断测试修补bug之后,gg.gap终于在今天这个有意义的日子正式上线CRAN。大家可以通过下面的代码进行安装。

install.packages("gg.gap")

都能切什么图,切几段

理论上,ggplot2的图都能切,想切几段切几段。

以Bar图为例

切一段

切两段

切三段

切N段

切散点图

切折线图

切Boxplot+jitter

#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群供大佬合作交流。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍未解决群内讨论,问题不私聊,帮助同行。

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

点击阅读原文,跳转最新文章目录阅读

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值