跟着NatureMetabolism学作图:R语言ggplot2转录组差异表达火山图

简介: 跟着NatureMetabolism学作图:R语言ggplot2转录组差异表达火山图

论文

Independent phenotypic plasticity axes define distinct obesity sub-types

https://www.nature.com/articles/s42255-022-00629-2#Sec15

s42255-022-00629-2.pdf

论文中没有公开代码,但是所有作图数据都公开了,我们可以试着用论文中提供的数据模仿论文中的图

今天的推文重复一下论文中的Fig3b 差异表达火山图,之前也有推文介绍过火山图,今天的推文主要学习的一个知识点是利用latex2exp这个R包添加文本,包括

  • 上下标
  • 换行 换行的基本写法
ggplot()+
  geom_point(aes(x=1,y=1))+
  labs(x=TeX(r"(\overset${ABCDEF}{abcde}$)"))

image.png

火山图的部分示例数据

image.png

读取数据

library(readr)
df<-read_tsv("data/20220921/fig3b.txt")
head(df)
colnames(df)

添加差异表达的分组

df %>% 
  mutate(change=case_when(
    log2FoldChange > 1 & pvalue < 0.05 ~ "Up",
    log2FoldChange < -1 & pvalue < 0.05 ~ "Down",
    TRUE ~ "Not Sig"
  )) -> new.df

table(new.df$change)
new.df %>% 
  filter(-log10(pvalue)>8) -> new.text.label

这里没有找到论文中差异表达的标准,这里是我随便写的

作图代码

library(ggplot2)
library(ggrepel)
library(latex2exp)
ggplot(data=new.df,aes(x=log2FoldChange,y=-log10(pvalue)))+
  geom_point(aes(color=change))+
  scale_color_manual(values = c("Down"="#3a53a4",
                                "Not Sig"="#aaaaaa",
                                "Up"="#7acde4"),
                     labels=c("Down"=TeX(r"(\textit{Nnat}${^+}$${^/}$${^-}$${^p}$-\textit{Heavy} depleted)"),
                              "Not Sig"="Not Significant",
                              "Up" = TeX(r"(\textit{Nnat}${^+}$${^/}$${^-}$${^p}$-\textit{Heavy} enriched)")))+
  theme_classic()+
  theme(legend.position = c(0.2,0.9),
        legend.text.align = 0,
        legend.title = element_blank())+
  geom_text_repel(data=new.text.label,
                  aes(x=log2FoldChange,y=-log10(pvalue),
                      label=mgi_symbol))+
  labs(x=TeX(r"(\overset${\textit{Nnat}{^+}{^/}{^-}{^p}-\textit{Lean}$ versus $\textit{Nnat}{^+}{^/}{^-}{^p}-\textit{Giant}}{(log{_2}$ fold $change)}$)"),
       y=TeX(r"(-log${_1}{_0}$ {(}\textit{P}{ value}{)})"))

image.png

制作封面图

p1<-ggplot(data=new.df,aes(x=log2FoldChange,y=-log10(pvalue)))+
  geom_point(aes(color=change))+
  scale_color_manual(values = c("Down"="#3a53a4",
                                "Not Sig"="#aaaaaa",
                                "Up"="#7acde4"),
                     labels=c("Down"=TeX(r"(\textit{Nnat}${^+}$${^/}$${^-}$${^p}$-\textit{Heavy} depleted)"),
                              "Not Sig"="Not Significant",
                              "Up" = TeX(r"(\textit{Nnat}${^+}$${^/}$${^-}$${^p}$-\textit{Heavy} enriched)")))+
  theme_classic()+
  theme(legend.position = c(0.2,0.9),
        legend.text.align = 0,
        legend.title = element_blank())+
  geom_text_repel(data=new.text.label,
                  aes(x=log2FoldChange,y=-log10(pvalue),
                      label=mgi_symbol))+
  labs(x=TeX(r"(\overset${\textit{Nnat}{^+}{^/}{^-}{^p}-\textit{Lean}$ versus $\textit{Nnat}{^+}{^/}{^-}{^p}-\textit{Giant}}{(log{_2}$ fold $change)}$)"),
       y=TeX(r"(-log${_1}{_0}$ {(}\textit{P}{ value}{)})"))

p2<-ggplot(data=new.df,aes(x=log2FoldChange,y=-log10(pvalue)))+
  geom_point(aes(color=change))+
  scale_color_manual(values = c("Down"="red",
                                "Not Sig"="#aaaaaa",
                                "Up"="darkgreen"),
                     labels=c("Down"=TeX(r"(\textit{Nnat}${^+}$${^/}$${^-}$${^p}$-\textit{Heavy} depleted)"),
                              "Not Sig"="Not Significant",
                              "Up" = TeX(r"(\textit{Nnat}${^+}$${^/}$${^-}$${^p}$-\textit{Heavy} enriched)")))+
  theme_classic()+
  theme(legend.position = c(0.2,0.9),
        legend.text.align = 0,
        legend.title = element_blank())+
  geom_text_repel(data=new.text.label,
                  aes(x=log2FoldChange,y=-log10(pvalue),
                      label=mgi_symbol))+
  labs(x=TeX(r"(\overset${\textit{Nnat}{^+}{^/}{^-}{^p}-\textit{Lean}$ versus $\textit{Nnat}{^+}{^/}{^-}{^p}-\textit{Giant}}{(log{_2}$ fold $change)}$)"),
       y=TeX(r"(-log${_1}{_0}$ {(}\textit{P}{ value}{)})"))

library(patchwork)
pdf(file = "Rplot03.pdf",width = 14.1,height = 6)
p1+p2
dev.off()

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

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!
相关文章
|
4月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
4月前
|
数据可视化
R语言自定义图形:ggplot2中的主题与标签设置
【8月更文挑战第30天】`ggplot2`作为R语言中功能强大的绘图包,其自定义能力让数据可视化变得更加灵活和多样。通过合理使用`theme()`函数和`labs()`函数,以及`geom_text()`和`geom_label()`等几何对象,我们可以轻松创建出既美观又富有表达力的图形。希望本文的介绍能够帮助你更好地掌握`ggplot2`中的主题与标签设置技巧。
|
7月前
|
数据可视化
R语言生态学进化树推断物种分化历史:分类单元数与时间关系、支系图可视化
R语言生态学进化树推断物种分化历史:分类单元数与时间关系、支系图可视化
R语言生态学进化树推断物种分化历史:分类单元数与时间关系、支系图可视化
|
7月前
|
监控 数据可视化 数据挖掘
R语言质量控制图、质量管理研究分析采购订单数量、CPU时间、纸厂产出、钢板数据可视化
R语言质量控制图、质量管理研究分析采购订单数量、CPU时间、纸厂产出、钢板数据可视化
|
7月前
|
数据可视化
R语言PLS-DA模型分析不同中医组别患者间差异指标数据可视化
R语言PLS-DA模型分析不同中医组别患者间差异指标数据可视化
|
7月前
|
数据可视化 Python
R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Box's M检验可视化
R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Box's M检验可视化
|
7月前
|
数据可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
|
7月前
|
数据可视化 前端开发
R语言中实现sem进行结构方程建模和路径图可视化(下)
R语言中实现sem进行结构方程建模和路径图可视化
|
7月前
|
数据可视化
R语言中实现sem进行结构方程建模和路径图可视化(上)
R语言中实现sem进行结构方程建模和路径图可视化
|
7月前
|
数据可视化 AndFix
R语言二手车汽车销售数据可视化探索:预处理、平滑密度图、地理空间可视化(下)
R语言二手车汽车销售数据可视化探索:预处理、平滑密度图、地理空间可视化