跟着Nature microbiology学画图~R语言ggplot2画散点图

2020-12-18 17:20:42 浏览数 (1)

image.png

重复的图片是Figure2中的散点图

image.png

这个图看起来有些像折线图,是因为散点太密集了

第一步是准备数据

数据总共三列,一列x,一列y,还有一列是文字标签,想给哪个点添加文字标签,对应就在这一行写上文字标签的内容,不想添加就是空白

需要示例数据的可以直接留言,觉得本期推文还有帮助的话可以转发支持呀!

数据格式部分截图

读入数据

这里介绍一个相对方便一点的读入数据方式,数据按照以上格式准备好,然后全选,右击选择复制,接下来打开R语言运行如下命令

代码语言:javascript复制
df1<-read.table("clipboard",header=T,sep="t")

这样就把数据读进来存储到df1里了

简单的散点图
代码语言:javascript复制
ggplot(df1,aes(x=Species.Rank,y=Cumultative.relative.abundance)) 
  geom_point()

image.png

对y轴的值进行log10转化,有两种方式
  • 第一种是直接对y进行log10,如下
代码语言:javascript复制
ggplot(df1,aes(x=Species.Rank,
               y=log10(Cumultative.relative.abundance))) 
  geom_point()
  • 第二种是叠加 scale_y_log10()函数
代码语言:javascript复制
ggplot(df1,aes(x=Species.Rank,y=Cumultative.relative.abundance)) 
  geom_point() 
  scale_y_log10()

image.png

这两种方法大家可以观察一下结果图

接下来就是添加文字标签

可以使用geom_text()或者geom_label()函数,geom_label()函数默认在文字外面有一个边框

代码语言:javascript复制
p1<-ggplot(df1,aes(x=Species.Rank,y=Cumultative.relative.abundance)) 
  geom_point() 
  scale_y_log10() 
  geom_text(aes(label=text_label))
p1

image.png

如果用geom_label()函数的话是如下效果

代码语言:javascript复制
p2<-ggplot(df1,aes(x=Species.Rank,y=Cumultative.relative.abundance)) 
  geom_point() 
  scale_y_log10() 
  geom_label(aes(label=text_label))
p2

image.png

这是因为即使没有文字,geom_label()也会在对应的位置添加文字边框

添加文字标签的时候与对应的点有些重叠,可以选择出图后手动调整,也可以选择另外一个R包ggrepel里的geom_text_repel()函数,它可以自动调整文字标签和点的位置
代码语言:javascript复制
library(ggrepel)

ggplot(df1,aes(x=Species.Rank,y=Cumultative.relative.abundance)) 
  geom_point() 
  scale_y_log10() 
  geom_text_repel(aes(label=text_label))

image.png

这样效果好像也不是太好,还是出图后手动调整吧!

接下来是简单的美化,包括
  • 去掉灰色背景
  • 更改y轴默认的刻度分隔点,现在是100,1000,10000,三个分隔,把它改成100,10000两个分隔
代码语言:javascript复制
ggplot(df1,aes(x=Species.Rank,y=Cumultative.relative.abundance)) 
  geom_point() 
  scale_y_log10(breaks=c(100,10000),
                labels=c(100,10000)) 
  geom_text_repel(aes(label=text_label)) 
  theme(panel.background = element_blank(),
        axis.line = element_line())

image.png

0 人点赞