前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2优雅绘制热图添加双箭头注释

ggplot2优雅绘制热图添加双箭头注释

作者头像
R语言数据分析指南
发布2023-09-11 08:51:37
5060
发布2023-09-11 08:51:37
举报
文章被收录于专栏:R语言数据分析指南

❝本节来介绍如何使用「ggplot2」来绘制热图并添加双向箭头添加注释,下面小编通过一个案例来进行展示,图形仅供展示用,希望各位观众老爷能够喜欢。。❞

原图

结果图

加载R包

代码语言:javascript
复制
library(tidyverse)
library(readxl)
library(magrittr)
library(grid)
library(cowplot)

导入数据

代码语言:javascript
复制
# 从Excel文件中读取数据,并设置行名
df <- read_excel("F1.xlsx", sheet = "Fig 1c KEGG module") %>% 
  column_to_rownames(var="...1")

数据清洗

代码语言:javascript
复制
# 对数据进行预处理,只选取前60行和前13列,并进行数据透视
df2 <- df %>% rownames_to_column(var="ID") %>% head(60) %>% select(1:13) %>%  
  pivot_longer(-1) %>% set_colnames(c("ID","name","value"))

数据可视化

代码语言:javascript
复制
p <- df2 %>% 
  ggplot(aes(name,ID,fill=value))+  # 设置ggplot的aes参数
  geom_tile()+  # 使用geom_tile()添加瓦片
  coord_cartesian(clip = "off") +  # 关闭坐标轴裁剪
  labs(x=NULL,y=NULL)+  # 移除x和y轴标签
  scale_y_discrete(expand=c(0,0),position="right")+  # 设置y轴
  scale_x_discrete(expand=c(0,0))+  # 设置x轴
  scale_fill_gradient2(mid="#FBFEF9",low="#0C6291",high="#A63446") +  # 设置填充颜色
  coord_cartesian(clip = "off") +  # 再次关闭坐标轴裁剪(可能是重复的步骤)
  theme_test()+  # 使用theme_test主题
  theme(axis.text.x=element_text(color="black",size=8,face="bold",angle = 90,vjust=0.5),  # 自定义x轴文本
        axis.text.y=element_text(color="black",size=8,face="bold",angle = 0,vjust=0.5),  # 自定义y轴文本
        axis.ticks = element_blank(),  # 移除轴刻度
        legend.title = element_blank(),  # 移除图例标题
        legend.background = element_blank(),  # 设置图例背景为透明
        legend.text = element_text(size=8,color="black",face="bold"),  # 自定义图例文本
        legend.position =c(-0.2,0.9),  # 设置图例位置
        legend.spacing.x = unit(0.01,"in"),  # 设置图例内部的水平间距
        plot.margin = ggplot2::margin(10,60,10,60))  # 设置图的边距

添加注释

代码语言:javascript
复制
# 使用cowplot的ggdraw和draw_plot函数来组合图形和其他元素
ggdraw(xlim = c(0, 1.1), ylim = c(0,1))+  # 设置绘图区域的界限
  draw_plot(p,x = 0, y =0) +  # 添加主图(热图)
  draw_line(x = c(0.9,0.9), y = c(0.08,0.98),lineend = "butt",size =1, col = "grey80",  # 添加箭头
            arrow=arrow(angle = 30, length = unit(0.4,"inches"),ends = "both", type = "closed"))+
  draw_grob(grid::grid.rect(gp=grid::gpar(fill="grey80",col="grey80")),x=0.875,y=0.11,height = 0.85,width=0.05)+  # 添加一个灰色的矩形
  draw_text(text = "EDC genes", size = 12, x = 0.9, y = 0.55, angle = 90,color="black",fontface = "bold",hjust = 0.5)  # 添加文本标签
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原图
  • 结果图
  • 加载R包
  • 导入数据
  • 数据清洗
  • 数据可视化
  • 添加注释
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档