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,如下
ggplot(df1,aes(x=Species.Rank,
y=log10(Cumultative.relative.abundance)))
geom_point()
- 第二种是叠加
scale_y_log10()
函数
ggplot(df1,aes(x=Species.Rank,y=Cumultative.relative.abundance))
geom_point()
scale_y_log10()
image.png
这两种方法大家可以观察一下结果图
接下来就是添加文字标签
可以使用geom_text()
或者geom_label()
函数,geom_label()
函数默认在文字外面有一个边框
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()
函数的话是如下效果
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两个分隔
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