前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着PNAS学作图:R语言ggplot2作图展示多序列比对结果

跟着PNAS学作图:R语言ggplot2作图展示多序列比对结果

作者头像
用户7010445
发布2023-01-06 20:42:43
5120
发布2023-01-06 20:42:43
举报

论文

The evidence remains clear: SARS-CoV-2 emerged via the wildlife trade

https://www.pnas.org/doi/10.1073/pnas.2214427119

在 饶毅科学 公众号 看到的推文 美国科学院院刊:逐条反驳新冠是实验室产物的错误说法

其中有一个图是

image.png

今天的推文我们来试着复现一下这个图

首先是一个多序列比对文件

image.png

读取数据

代码语言:javascript
复制
df <- phylotools::read.fasta("data/20221126/pnas.fasta") 
df

把序列拆分成一个碱基一列

代码语言:javascript
复制
df %>% 
  tidyr::separate(seq.text,paste0("col",str_pad(1:28,2,side = "left",pad = "0")),'') %>% 
  select(-col01) %>% 
  mutate(seq.name=factor(seq.name,levels = rev(seq.name))) %>% 
  pivot_longer(!seq.name) -> new.df

这里有一个问题是序列是27个碱基,拆分的时候需要指定28列,然后第一列是空的,暂时没有想明白是为啥

首先是多序列比对

代码语言:javascript
复制
p1<-new.df %>% 
  ggplot(aes(x=name,y=seq.name))+
  geom_tile(fill="white",alpha=0)+
  geom_text(aes(label=value))+
  theme_bw()+
  theme(axis.text.x = element_blank(),
        axis.ticks = element_blank(),
        panel.grid = element_blank(),
        panel.border = element_blank()) 
p1

image.png

添加左右两侧的数字

代码语言:javascript
复制
df1<-data.frame(x=0,
                y=11:1,
                label=c(671,668,669,666,744,743,756,736,706,747,759))
df2<-data.frame(x=28,
                y=11:1,
                label=c(695,692,693,690,770,665,777,761,727,768,780))
  
p1+
  geom_text(data=df1,
            aes(x=x,y=y,label=label),
            inherit.aes = FALSE,hjust=1)+
  geom_text(data=df2,
            aes(x=x,y=y,label=label),
            inherit.aes = FALSE,hjust=0)+
  coord_equal(xlim = c(-1,29)) -> p2
p2

image.png

在自己感兴趣的地方添加背景色

部分示例数据

image.png

代码语言:javascript
复制
df3<-readxl::read_excel("data/20221126/data.xlsx")
df3


p2 +
  geom_tile(data=df3,aes(x=x,y=y,fill=group),
            color="white",show.legend = FALSE)+
  geom_text(data=df3,aes(x=x,y=y,label=label),
            color="white")+
  scale_fill_manual(values = c("#00adef","#ed1b24"))+
  labs(x=NULL,y=NULL)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论文
  • 首先是一个多序列比对文件
  • 读取数据
  • 把序列拆分成一个碱基一列
  • 首先是多序列比对
  • 添加左右两侧的数字
  • 在自己感兴趣的地方添加背景色
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档