跟着Nature学作图:R语言ggplot2热图

简介: 跟着Nature学作图:R语言ggplot2热图

论文

A saturated map of common genetic variants associated with human height

https://www.nature.com/articles/s41586-022-05275-y

s41586-022-05275-y.pdf

代码没有公开,但是作图数据基本都公开了,争取把每个图都重复一遍

今天的推文重复论文中的extended Figure8 热图

image.png

这里是三个热图,我们做三个图,然后将3个图拼接到一起

论文中提供的数据如下

image.png

作图的话需要对数据进行简单的整理,比如第一个图的数据

image.png

加载需要用到的R包

library(readxl)
library(tidyverse)
library(stringr)

第一个热图

dat01<-read_excel("data/20221014/extendFig8.xlsx",
                  sheet = "Sheet2")
p1<-dat01 %>% 
  pivot_longer(-y,names_to = "x") %>% 
  mutate(signif=case_when(
    value > 1.35 ~ "*",
    TRUE ~ ""
  ),
  value=round(value,2),
  x=str_replace(x,"\\(","\n"),
  x=str_replace(x,"\\)","")) %>% 
  ggplot(aes(x=x,y=y))+
  geom_tile(aes(fill=value))+
  scale_fill_gradient2(low="blue",
                       high = "red",
                       mid = "white",
                       midpoint=1,
                       name="")+
  scale_x_discrete(position = "top",
                   expand = expansion(mult = c(0,0)))+
  scale_y_discrete(expand = expansion(mult = c(0,0)))+
  labs(x=NULL,y="DEPICT")+
  geom_text(aes(label=paste0(value,signif)))+
  #guide_colorbar()
  guides(fill = guide_colourbar(barwidth = 0.5, 
                                barheight = 5,
                                ticks.colour = "black",
                                ticks.linewidth = 0.5,
                                frame.colour = "black"))
p1

image.png

后面两个图的代码是一样的,只需要换一下数据就可以了

dat02<-read_excel("data/20221014/extendFig8.xlsx",
                  sheet = "Sheet3")


p2<-dat02 %>% 
  pivot_longer(-y,names_to = "x") %>% 
  mutate(signif=case_when(
    value > 1.35 ~ "*",
    TRUE ~ ""
  ),
  value=round(value,2),
  x=str_replace(x,"\\(","\n"),
  x=str_replace(x,"\\)","")) %>% 
  ggplot(aes(x=x,y=y))+
  geom_tile(aes(fill=value))+
  scale_fill_gradient2(low="blue",
                       high = "red",
                       mid = "white",
                       midpoint=1,
                       name="")+
  scale_x_discrete(position = "top",
                   expand = expansion(mult = c(0,0)))+
  scale_y_discrete(expand = expansion(mult = c(0,0)))+
  theme(axis.text.x = element_blank(),
        axis.ticks.x = element_blank())+
  labs(x=NULL,y="MAGMA")+
  geom_text(aes(label=paste0(value,signif)))+
  #guide_colorbar()
  guides(fill = guide_colourbar(barwidth = 0.5, 
                                barheight = 10,
                                ticks.colour = "black",
                                ticks.linewidth = 0.5,
                                frame.colour = "black"))

p2

dat03<-read_excel("data/20221014/extendFig8.xlsx",
                  sheet = "Sheet4")


p3<-dat03 %>% 
  pivot_longer(-y,names_to = "x") %>% 
  mutate(signif=case_when(
    value > 1.35 ~ "*",
    TRUE ~ ""
  ),
  value=round(value,2),
  x=str_replace(x,"\\(","\n"),
  x=str_replace(x,"\\)","")) %>% 
  ggplot(aes(x=x,y=y))+
  geom_tile(aes(fill=value))+
  scale_fill_gradient2(low="blue",
                       high = "red",
                       mid = "white",
                       midpoint=1,
                       name="",
                       breaks=c(1,2))+
  scale_x_discrete(position = "top",
                   expand = expansion(mult = c(0,0)))+
  theme(axis.text.x = element_blank(),
        axis.ticks.x = element_blank())+
  scale_y_discrete(expand = expansion(mult = c(0,0)))+
  labs(x=NULL,y=NULL)+
  geom_text(aes(label=paste0(value,signif)))+
  #guide_colorbar()
  guides(fill = guide_colourbar(barwidth = 0.5, 
                                barheight = 1.5,
                                ticks.colour = "black",
                                ticks.linewidth = 0.5,
                                frame.colour = "black"))
p3

最后是拼图

library(patchwork)

p1/p2/p3 + 
  plot_layout(heights = c(7,7,1))

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`中的主题与标签设置技巧。
|
6月前
|
存储 数据可视化 数据挖掘
R语言可视化:ggplot2冲积/桑基图sankey分析大学录取情况、泰坦尼克幸存者数据
R语言可视化:ggplot2冲积/桑基图sankey分析大学录取情况、泰坦尼克幸存者数据
|
6月前
|
算法 数据可视化
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
|
6月前
r语言ggplot2误差棒图快速指南
r语言ggplot2误差棒图快速指南
|
6月前
|
数据可视化
R语言ggplot2 对Facebook用户数据可视化分析
R语言ggplot2 对Facebook用户数据可视化分析
|
编解码 数据可视化 数据挖掘
R语言之 ggplot 2 和其他图形
R语言之 ggplot 2 和其他图形
96 0
|
存储 Go
速绘丨GO富集气泡图绘制方法,利用R语言ggplot2包快速绘制,完整脚本可重复绘图
速绘丨GO富集气泡图绘制方法,利用R语言ggplot2包快速绘制,完整脚本可重复绘图
|
数据可视化 数据挖掘 Linux
科研绘图丨使用R语言Pheatmap包快速绘制基因表达量热图的方法,支持聚类和配色自定义修改
科研绘图丨使用R语言Pheatmap包快速绘制基因表达量热图的方法,支持聚类和配色自定义修改
|
数据采集 机器学习/深度学习 SQL
绝不可错过!R语言与ggplot2实现SCI论文数据分析神器
绝不可错过!R语言与ggplot2实现SCI论文数据分析神器
211 0

热门文章

最新文章