今天要模仿的图片来自于论文 ​Core gut microbial communities are maintained by beneficial interactions and strain variability in fish​。期刊是 ​Nature microbiology


跟着Nature microbiology学画图~R语言ggplot2画直方图_fish image.png

重复的图片是Figure2中的直方图

跟着Nature microbiology学画图~R语言ggplot2画直方图_数据_02 image.png

首先是模拟数据

直方图的数据相对比较简单,只需要准备一列x和一列y即可


跟着Nature microbiology学画图~R语言ggplot2画直方图_直方图_03 image.png

另存为csv格式,存储到Rstudio的工作目录下。这边我命名为 ​​example_1.csv​

读入数据
df<-read.csv("example_1.csv",header=T)
df
最基本的直方图

使用geom_col()函数

ggplot(df,aes(x=x,y=y))+
geom_col()

跟着Nature microbiology学画图~R语言ggplot2画直方图_fish_04 image.png

如果想要让柱子紧挨着,去除柱子之间的空白,可以加一个​​width=1​​这个参数
ggplot(df,aes(x=x,y=y))+
geom_col(width = 1)

跟着Nature microbiology学画图~R语言ggplot2画直方图_直方图_05 image.png

为边框设置颜色用到的是​​color​​参数
ggplot(df,aes(x=x,y=y))+
geom_col(width = 1,color="black")

跟着Nature microbiology学画图~R语言ggplot2画直方图_直方图_06 image.png

更改柱子的填充颜色用到的是​​fill​​参数
ggplot(df,aes(x=x,y=y))+
geom_col(width = 1,color="black",fill="grey")

跟着Nature microbiology学画图~R语言ggplot2画直方图_直方图_07 image.png

更改x轴和y轴的标题,可以用​​labs()​​函数
ggplot(df,aes(x=x,y=y))+
geom_col(width = 1,color="black",fill="grey")+
labs(x="Niche width",y="Number of ESVs")

跟着Nature microbiology学画图~R语言ggplot2画直方图_fish_08 image.png

去掉灰色的背景,通过主题函数​​theme()​​进行设置
ggplot(df,aes(x=x,y=y))+
geom_col(width = 1,color="black",fill="grey")+
labs(x="Niche width",y="Number of ESVs")+
theme(panel.background = element_blank())

跟着Nature microbiology学画图~R语言ggplot2画直方图_直方图_09 image.png

加上x轴和y轴的线条
ggplot(df,aes(x=x,y=y))+
geom_col(width = 1,color="black",fill="grey")+
labs(x="Niche width",y="Number of ESVs")+
theme(panel.background = element_blank(),
axis.line = element_line())

跟着Nature microbiology学画图~R语言ggplot2画直方图_数据_10 image.png

添加一条垂直的辅助线,用到的是​​geom_vline()​​函数
ggplot(df,aes(x=x,y=y))+
geom_col(width = 1,color="black",fill="grey")+
labs(x="Niche width",y="Number of ESVs")+
theme(panel.background = element_blank(),
axis.line = element_line())+
geom_vline(xintercept = 4,lty="dashed",color="red")

跟着Nature microbiology学画图~R语言ggplot2画直方图_数据_11 image.png

添加右侧粉红色的矩形框,用到的是​​geom_rect()​​函数
ggplot(df,aes(x=x,y=y))+
geom_col(width = 1,color="black",fill="grey")+
labs(x="Niche width",y="Number of ESVs")+
theme(panel.background = element_blank(),
axis.line = element_line())+
geom_vline(xintercept = 4,lty="dashed",color="red")+
geom_rect(aes(xmin=4.02,xmax=4.5,ymin=0,ymax=1200),
fill="red",alpha=0.2)

跟着Nature microbiology学画图~R语言ggplot2画直方图_fish_12 image.png

最后是添加一些文本注释,使用的是annotate()函数
ggplot(df,aes(x=x,y=y))+
geom_col(width = 1,color="black",fill="grey")+
labs(x="Niche width",y="Number of ESVs")+
theme(panel.background = element_blank(),
axis.line = element_line())+
geom_vline(xintercept = 4,lty="dashed",color="red")+
geom_rect(aes(xmin=4.02,xmax=4.5,ymin=0,ymax=1200),
fill="red",alpha=0.2)+
annotate("text",x=0,y=1250,label="Specialist microbes")+
annotate("text",x=4,y=1250,label="Generalist microbes")

跟着Nature microbiology学画图~R语言ggplot2画直方图_fish_13 image.png

欢迎大家关注我的公众号

小明的数据分析笔记本