基因组数据绘图ggplot2绘图R可视化学习

如何将柱状图y轴截断

2021-01-23  本文已影响0人  杨博士聊生信

Hello,大家好,最近碰到做图需要将y轴截断,当然很多工具都可以实现这个目的,比如excel, origin,在这我们聊聊如何使用R将y轴截断。
先看一下原图


image.png

现在我想将上图的y轴截


image.png

使用R画这个图很简单,只需三步,1)画上面半部分,2)画下面半部分,3)最后将上下两部分图拼接到一起。

1)先画下面半部分

​#加载画图所需要的R包,如果没安装ggplot2,请使用install.packages()自行安装
library(ggplot2)
library(ggpubr) #基于ggplot2的可视化包
​
#使用read.table读入数据
data <- read.table("sample.txt", header = T)
data #查看一下输入的数据格式
image.png
#去掉背景网格
theme <- theme(panel.background = element_blank(),panel.border=element_rect(fill=NA,linetype = 1, color="black",size=1))
fig1 <- ggplot(data,aes(x=treatment,y=content,fill =treatment )) + geom_bar(stat='identity',position=position_dodge()) +
  labs(x="treatment",y="FPKM")+    #使用labs自定义x轴和y轴标签名字
  coord_cartesian(ylim = c(0,9)) +  #使用ylim设置下面一半的范围
  geom_errorbar(aes(x=treatment, ymin=content-SE, ymax=content+SE), width=0.4, colour="black", alpha=0.9, size=1.3) + #添加误差棒
  theme
fig1 #下面半部分
image.png

2)画上面半部分

fig2 <- ggplot(data,aes(x=treatment,y=content,fill =treatment)) + geom_bar(stat='identity',position=position_dodge()) +
  labs(x=NULL,y=NULL) +   #上面半部分标签不需要添加
  theme(axis.text.x = element_blank(),axis.ticks.x = element_blank()) +     #去掉X轴和X轴的文字
  coord_cartesian(ylim = c(17,20)) +  #使用ylim设置上面一半的范围
  scale_y_continuous(breaks = c(17,20,1)) + 
  geom_errorbar(aes(x=treatment, ymin=content-SE, ymax=content+SE), width=0.4, colour="black", alpha=0.9, size=1.3) + #添加误差棒
  theme
​
fig2
image.png

3)利用ggrange将上下两部分拼接起来

#利用ggarrange()可以组合不同的图,align为对齐参数, align = "v"为垂直对齐, align = "h"为水平对齐
ggarrange(fig2,fig1,heights=c(2/5, 3/5),ncol = 1, nrow = 2,common.legend = T,legend="right",align = "v")
image.png

perfect!如果对配色或者其它地方不满意,我们可以将该图保存为pdf格式,再使用AI进行精修。

参考:
https://ggplot2-book.org
R语言-ggplot2画图如何截断y 轴(https://www.jianshu.com/p/79331cb85a03?from=singlemessage

上一篇 下一篇

猜你喜欢

热点阅读