R语言基础绘图函数散点图~跟着Nature Communications学画图~Figure1

2020-11-05 19:02:21 浏览数 (1)

今天继续 跟着Nature Communications学画图系列第二篇。学习R语言基础绘图函数画散点图。

对应的 Nature Communications 的论文是 Fecal pollution can explain antibiotic resistance gene abundances in anthropogenically impacted environments

这篇论文数据分析和可视化的部分用到的数据和代码全部放到了github上 https://github.com/karkman/crassphage_project

非常好的R语言学习素材。

今天学习Figure1中被红色框线圈住的散点图

image.png

第一部分先收一下上一篇文章的尾

跟着Nature Communications学画图~Figure1~基础绘图函数箱线图

这篇文章中有人留言说 和原图不是很像,因为配色没有按照论文中提供的代码来。 下面是完全重复论文中的代码

代码语言:javascript复制
cols <- c("#E69F00", "#56B4E9", "#009E73")
boxplot(log10(rel_crAss)~country,data=HMP,col=cols,
        axes=F,xlab=NULL,ylab=NULL,
        horizontal = T)
axis(2,at=c(1,2,3),labels=c("China", "Europe", "US"),las=1)
title("a",adj=0,line=0)

image.png

第二部分 基础绘图函数散点图
  • 读入数据
代码语言:javascript复制
HMP<-read.table("data/HMP.txt")
  • 最基本的散点图
代码语言:javascript复制
plot(rel_res~rel_crAss,data=HMP)

image.png

画图用plot()函数,需要指定画图用到的变量y和x,还有画图用到的数据data

原始代码分别对 rel_res 和 rel_crAss取了log10

代码语言:javascript复制
plot(log10(rel_res)~log10(rel_crAss),data=HMP)

image.png

取log10以后可以看到散点分布的更加均匀了。

接下来就是对图进行美化了
  • 按照国家分组填充颜色
代码语言:javascript复制
cols <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
plot(log10(rel_res)~log10(rel_crAss), data=HMP, 
     bg=cols[as.factor(HMP$country)],pch=21)

image.png

  • 更改点的大小
代码语言:javascript复制
plot(log10(rel_res)~log10(rel_crAss), data=HMP, 
     bg=cols[as.factor(HMP$country)],pch=21,cex=2)

image.png

  • 更改x轴和y轴的标签
代码语言:javascript复制
plot(log10(rel_res)~log10(rel_crAss), data=HMP, bg=cols[as.factor(HMP$country)], pch=21,
     ylab = "Normalized ARG abundance (log10)", 
     xlab="Normalized crAssphage abundance (log10)", cex=2)

image.png

  • 更改坐标轴的范围
代码语言:javascript复制
plot(log10(rel_res)~log10(rel_crAss), data=HMP, 
     bg=cols[as.factor(HMP$country)], pch=21,
     ylab = "Normalized ARG abundance (log10)", 
     xlab="Normalized crAssphage abundance (log10)", 
     cex=2, 
     ylim=c(2.5, 4.5))

image.png

接下来将箱线图和散点图按照上下拼接到一起,用到的是par(fig=c(a,b,c,d)),这里需要满足 a<b,c<d

具体可以参考链接 https://blog.csdn.net/qingchongxinshuru/article/details/52004182

代码语言:javascript复制
par(fig=c(0,1,0,0.75))
plot(log10(rel_res)~log10(rel_crAss), data=HMP, 
     bg=cols[as.factor(HMP$country)], pch=21,
     ylab = "Normalized ARG abundance (log10)", 
     xlab="Normalized crAssphage abundance (log10)", 
     cex=2, 
     ylim=c(2.5, 4.5))
par(fig=c(0,1,0.5,1),new=T)
boxplot(log10(rel_crAss)~country,data=HMP,col=cols,
        axes=F,xlab=NULL,ylab=NULL,
        horizontal = T)
axis(2,at=c(1,2,3),labels=c("China", "Europe", "US"),las=1)
title("a",adj=0,line=0)

image.png

0 人点赞