转自 小丫画图
【提出问题】
A vs B显著,C vs D显著,AB vs CD也显著。可是,当我把ABCD画到一张图上时,问题出现了:
由于AB的柱子远高于CD,A跟B、C跟D看起来就没啥区别了,而且CD还被压成了肉饼。这可怎么办?
【解决方案】
小丫画图群里的小伙伴分享了他的好办法:断开Y轴。看效果吧:
*p < 0.05, **p < 0.01, ***p < 0.001
Figure 5. LC-MS analysis of sterols and lipids in WT and fenΔ/Δ cells.
出自Jiaxin Gao, Haitao Wang, Zeyao Li, Ada Hang-Heng Wong, Yi-Zheng Wang, Yahui Guo, Xin Lin, Guisheng Zeng, Yue Wang & Jianbin Wang. (2018) Candida albicans gains azole resistance by altering sphingolipid composition. Nature communications. Oct 29
刚刚online,终于可以拿出来秀啦!
小伙伴尝试了n种方法,才找到这个函数:gap.barplot,函数作者:金子哦。
【特点】
1. 简单易用,一行代码就能实现
gap.barplot(dt, y.cols = 2:4, sd.cols = 5:7, col = cols, brk.type = brkt, brk.size = 0.6, brk.lwd = 2, max.fold = 5, ratio = 2, cex.error = 0.3)
2. 可以自己设置断点位置、比例、形状、长度,还能自动计算合适的断点位置;
3. 函数注释清晰,方便修改、灵活运用。
【写给小白的初级模仿指南】
1. 打开网页:https://blog.csdn.net/u014801157/article/details/24372371
2. 把红色箭头所指的方框里的代码复制粘贴到文本文件,保存到当前文件夹,文件名为gap.barplot.R
3. 在R里面输入:
source("gap.barplot.R")
4. 把蓝色箭头所指的方框里的代码复制粘贴到R里运行
就画出示例图啦!
怎样用你自己的数据画出这样的图?
【写给小白的代码套用方法】
1. 导出示例数据
作者的示例数据保存在dt里,运行下面这行,把它保存到txt文件里
write.table(dt,"easy_input.txt", sep = "\t", quote = F, row.names = F)
用Excel打开,看懂格式:
第一列Ozone是sample ID,第2到4列是三个指标的均值,第5到7列对应前面三个指标的标准差。
2. 替换成自己的数据
用你自己的数据依次替换easy_input.txt里的sample ID、均值和标准差。
3. 在R里运行下面这段代码:
source("gap.barplot.R")dt <- read.table("easy_input.txt", header = T, as.is = T) #读入自己的数据
cols <- c("#223D6C","#D20A13","#FFD121") #自定义颜色
gap.barplot(dt, y.cols = 2:4, #均值所在的列 sd.cols = 5:7, #标准差所在的列 col = cols, #bar的颜色 brk.type = "normal", #y轴断点的类型 brk.size = 0.6, #断点标记线的长度 brk.lwd = 2, #断点标记线的线宽 max.fold = 5, #自动计算断点时最大值与下方数据最大值的最大倍数比 ratio = 2, #断裂后上部与下部y轴长度的比例 cex.error = 0.3) #误差线相对长度
图就出来啦!
【怎样画成发表级】
上面的代码实现了断开Y轴的基本功能,只能算初稿,需要精心修改调试,才能达到发表级,就像上面paper里的Figure 5那样。
顺便欣赏一下paper里的Figure 4:
Fig. 4 Genetic screens for fluconazole-resistant mutants.
第n次感慨一下!这家伙画的图真是美啊!
联系客服