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

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

论文

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

读取数据

df <- phylotools::read.fasta("data/20221126/pnas.fasta") 
df

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

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列,然后第一列是空的,暂时没有想明白是为啥

首先是多序列比对

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

添加左右两侧的数字

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

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)

image.png

示例数据和代码可以给推文点赞,点击在看,最后留言获取

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!
相关文章
|
3月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
3月前
|
数据可视化
R语言自定义图形:ggplot2中的主题与标签设置
【8月更文挑战第30天】`ggplot2`作为R语言中功能强大的绘图包,其自定义能力让数据可视化变得更加灵活和多样。通过合理使用`theme()`函数和`labs()`函数,以及`geom_text()`和`geom_label()`等几何对象,我们可以轻松创建出既美观又富有表达力的图形。希望本文的介绍能够帮助你更好地掌握`ggplot2`中的主题与标签设置技巧。
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
6月前
|
机器学习/深度学习 数据挖掘 计算机视觉
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
|
6月前
|
算法 Python
R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列
R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列
|
6月前
|
数据可视化
数据分享|R语言Copula对债券的流动性风险时间序列数据进行度量
数据分享|R语言Copula对债券的流动性风险时间序列数据进行度量
|
6月前
|
数据采集 数据挖掘 测试技术
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
|
6月前
|
机器学习/深度学习 Python
【视频】ARIMA时间序列模型原理和R语言ARIMAX预测实现案例
【视频】ARIMA时间序列模型原理和R语言ARIMAX预测实现案例
|
6月前
|
数据采集 人工智能 算法
R语言ARMA-GARCH模型金融产品价格实证分析黄金价格时间序列
R语言ARMA-GARCH模型金融产品价格实证分析黄金价格时间序列
|
6月前
R语言单位根、协整关系Granger因果检验、RESET分析汇率在岸和离岸数据时间序列
R语言单位根、协整关系Granger因果检验、RESET分析汇率在岸和离岸数据时间序列
下一篇
无影云桌面