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)
网友评论