前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着Nature学作图:R语言ggplot2散点图并给指定的点添加颜色

跟着Nature学作图:R语言ggplot2散点图并给指定的点添加颜色

作者头像
用户7010445
发布2023-08-23 10:41:56
1.2K0
发布2023-08-23 10:41:56
举报
文章被收录于专栏:小明的数据分析笔记本

论文

Telomere-to-mitochondria signalling by ZBP1 mediates replicative crisis

https://www.nature.com/articles/s41586-023-05710-8

s41586-023-05710-8.pdf

大部分图的原始数据都有,争取把有原始数据的图都用R语言来复现一下

41586_2023_5710_MOESM4_ESM (1).xlsx

今天的推文复现一下论文中的Fig1a

image.png

部分示例数据

image.png

最基本的散点图

代码语言:javascript
复制
library(tidyverse)
fig1a<-read_delim("data/20230521/Figure1a.txt",
           delim = " ")

library(ggplot2)

ggplot()+
  geom_point(data=fig1a,
             aes(x=log2(FC_Replicate_1),
                 y=log2(FC_Replicate_2)),
             size=10,
             shape=21,
             fill="#f1f1f1",
             color="black")+
  theme_bw()

image.png

给指定的点映射颜色

这里我的处理方式是把想要映射颜色的点单独挑出来,然后再叠加一层

代码语言:javascript
复制
geneSelected<-c("ZBP1","IFNB1","CGAS","IFNAR1","STING","IFNAR2")
match(geneSelected,fig1a %>% pull(Gene))

本来是想用上面的代码把图例基因的数据匹配出来,但是有些基因名没有找到,这里我就随机选择几个了

代码语言:javascript
复制
fig1a %>% 
  sample_n(6) -> fig1adf


ggplot()+
  geom_point(data=fig1a,
             aes(x=log2(FC_Replicate_1),
                 y=log2(FC_Replicate_2)),
             size=10,
             shape=21,
             fill="#f1f1f1",
             color="black")+
  theme_bw()+
  geom_point(data=fig1adf,
             aes(x=log2(FC_Replicate_1),
                 y=log2(FC_Replicate_2),
                 fill=Gene),
             size=10,
             shape=21)

image.png

接下来是调整一些细节

代码语言:javascript
复制
ggplot()+
  geom_point(data=fig1a,
             aes(x=log2(FC_Replicate_1),
                 y=log2(FC_Replicate_2)),
             size=10,
             shape=21,
             fill="#f1f1f1",
             color="black")+
  theme_classic()+
  geom_point(data=fig1adf,
             aes(x=log2(FC_Replicate_1),
                 y=log2(FC_Replicate_2),
                 fill=Gene),
             size=10,
             shape=21)+
  scale_x_continuous(breaks = c(2,3,4))+
  scale_y_continuous(breaks = c(2,3,4))+
  theme(legend.position = "top",
        legend.text = element_text(face="italic"))+
  guides(fill=guide_legend(ncol = 2,title = NULL))+
  labs(x="log2[fold change]\nReplicate 1",
       y="log2[fold change]\nReplicate 2")

image.png

这里既要把2设置成下标,又要实现文本分行,我暂时想不到用什么办法来实现了

最后是生成封面图的代码

代码语言:javascript
复制
ggplot()+
  geom_point(data=fig1a,
             aes(x=log2(FC_Replicate_1),
                 y=log2(FC_Replicate_2)),
             size=5,
             shape=21,
             fill="#f1f1f1",
             color="black")+
  theme_classic()+
  geom_point(data=fig1adf,
             aes(x=log2(FC_Replicate_1),
                 y=log2(FC_Replicate_2),
                 fill=Gene),
             size=5,
             shape=21)+
  scale_x_continuous(breaks = c(2,3,4))+
  scale_y_continuous(breaks = c(2,3,4))+
  theme(legend.position = "top",
        legend.text = element_text(face="italic"))+
  guides(fill=guide_legend(ncol = 2,title = NULL))+
  labs(x="log2[fold change]\nReplicate 1",
       y="log2[fold change]\nReplicate 2") -> p1

ggplot()+
  geom_point(data=fig1a,
             aes(x=log2(FC_Replicate_1),
                 y=log2(FC_Replicate_2)),
             size=5,
             shape=21,
             fill="#f1f1f1",
             color="black")+
  theme_classic()+
  geom_point(data=fig1adf,
             aes(x=log2(FC_Replicate_1),
                 y=log2(FC_Replicate_2),
                 fill=Gene),
             size=5,
             shape=21)+
  scale_x_continuous(breaks = c(2,3,4))+
  scale_y_continuous(breaks = c(2,3,4))+
  theme(legend.position = "top",
        legend.text = element_text(face="italic"))+
  guides(fill=guide_legend(ncol = 2,title = NULL))+
  labs(x="log2[fold change]\nReplicate 1",
       y="log2[fold change]\nReplicate 2")+
  scale_fill_manual(values = c("#ef7a79","#edd08e","#29b473",
                               "#000000","#094c8b","#92d4f6")) -> p2

library(patchwork)
p1+p2

image.png

推文记录的是自己的学习笔记,内容可能会存在错误,请大家批判着看,欢迎大家指出其中的错误

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

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论文
  • 部分示例数据
  • 最基本的散点图
  • 给指定的点映射颜色
  • 接下来是调整一些细节
  • 最后是生成封面图的代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档