论文是
Whole-genome resequencing of 445 Lactuca accessions reveals the domestication history of cultivated lettuce
这篇论文的数据是公开的,代码也公开了一部分,那我们就可以按照他的代码来学二代测序的数据分析啦
今天我们来学习一些论文中 Fig1c 的画图代码,如下
数据对应的是论文中的 source data figure1
图的主要内容是散点图展示主成分分析的结果,并且将局部的区域放大展示
首先是读入数据
df<-readxl::read_excel("NG/41588_2021_831_MOESM4_ESM.xlsx",
sheet = "Fig1c",
n_max = 441)
head(df)
tail(df)
这里直接读入excel文件用到的是readxl
包中的read_excel()
函数,需要制定
- 文件路径
- excel表格中的sheet名称
这里的n_max
参数是指定读进来的数据的最多行数,英文这个数据集结尾处有一些注释内容,我们不需要,所以需要制定这个参数,自己的数据集通常是不需要指定这个参数的
先画一个简单的散点图
library(ggplot2)
ggplot(data=df,aes(x=PC1,y=PC2))+
geom_point(aes(color=Species))
这个看着和论文中的有些不一样,仔细看看应该是 论文中对 PC1去了一个负数,而且论文中的图也映射了点的形状
对PC1取一个负数
library(dplyr)
df %>%
mutate(PC1.1 = - PC1) -> df
画图
ggplot(data=df,aes(x=PC1.1,y=PC2))+
geom_point(aes(color=Species,shape=Species))
这里会遇到一个警告信息
Warning messages: 1: The shape palette can deal with a maximum of 6 discrete values because more than 6 becomes difficult to discriminate; you have 9. Consider specifying shapes manually if you must have them. 2: Removed 369 rows containing missing values (geom_point).
形状超过留个就难以区分了,如果你非要用超过6个的形状,这里需要手动指定
这里是9个形状
手动指定
ggplot(data=df,aes(x=PC1.1,y=PC2))+
geom_point(aes(color=Species,shape=Species),
size=5)+
scale_shape_manual(values=15:23)
接下来是简单的美化了
ggplot(data=df,aes(x=PC1.1,y=PC2))+
geom_point(aes(color=Species,shape=Species),
size=5)+
scale_shape_manual(values=15:23)+
theme_bw()+
theme(legend.position = "none",
panel.grid = element_blank())+
labs(x="PC1 37.01% of variance",
y="PC2 22.09% of variance")+
geom_rect(aes(xmin=0,xmax=0.04,ymin=-0.01,ymax=0.02),
fill="white",alpha=0,
color="black")+
annotate(geom="text",x=0.01,y=0.01,label="GP1")+
annotate(geom="text",x=-0.09,y=0.05,
label="italic(L.saligna)",parse=T,
color="#00b9e3")+
annotate(geom="text",x=-0.02,y=-0.075,
label="italic(L.georgica)",parse=T,
color="#00ba38")+
annotate(geom="text",x=-0.07,y=-0.14,
label="italic(L.virosa)",parse=T,
color="#ff82cf")
那接下来是如何放大展示呢?想到了两种方案
- 第一个是拼图
- 第二个是借助ggforce这个包里的
facet_zoom()
函数
可以参考 https://github.com/thomasp85/ggforce/pull/202
具体如何实现有时间再来研究吧!
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!