前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2优雅的绘制组合版热图

ggplot2优雅的绘制组合版热图

作者头像
R语言数据分析指南
发布2022-12-20 19:46:45
8010
发布2022-12-20 19:46:45
举报

❝最近在进行绘图实战颇有感触,今天来介绍一下如何使用「ggplot2绘制组合热图」,有时我们如果只想对部分数据进行热图形式的展示可以用到这种类型的图表;绘图过程倒也简单主要是选择好合适的展示场所

代码语言:javascript
复制
library(tidyverse)
library(ggh4x)
library(patchwork)

定义主题

代码语言:javascript
复制
theme_niwot <- function(){
  theme_test()+
    theme(axis.text.y=element_text(color="black",size =8.5),
          axis.ticks= element_blank(),
          strip.background = element_blank(),
          strip.text = element_blank(),
          panel.spacing.y = unit(0,"cm"),
          plot.background = element_blank(),
          panel.border = element_rect(fill=NA,color="white",size=1),
          plot.margin = margin(0,0.2,0,0.2,"cm")
    )
}

加载数据

代码语言:javascript
复制
data <- read_tsv("data.xls")

数据清洗

代码语言:javascript
复制
df <- data %>% pivot_longer(-sample) %>% 
  left_join(.,read_tsv("group.xls"),by="name") %>% 
  arrange(sample) %>% 
  mutate(sample=as.character(sample))

#定义因子
df$sample <- factor(df$sample,levels = df$sample %>% unique())

绘制文本热图

代码语言:javascript
复制
p1 <- df %>%
  ggplot(.,aes(sample,name))+
  geom_tile(color="grey60",fill="white",size=0.2)+
  geom_text(aes(label=value),size=3,color="black",hjust=0.5,vjust=0.5)+
  labs(x = NULL,y = NULL,color=NULL,fill=NULL)+
  theme_niwot()

绘制组合热图

❝此处将数据数据拆分成两份进行图形绘制,本想借助「ggh4x」 的分面功能,但是此份数据不太适合,关于ggh4x后面再做介绍 ❞

代码语言:javascript
复制
p2 <- df %>% filter(group=="A") %>% 
  ggplot(aes(sample,name,fill=value,color=value))+
  geom_tile(color="grey60",fill="white",size=0.2)+
  geom_point(aes(size=value),shape=22)+
  facet_grid2(group~.,scale="free_y",switch = "y")+
  labs(x = NULL,y = NULL,color=NULL,fill=NULL)+
  scale_color_gradientn(colours = rev(RColorBrewer::brewer.pal(11,"RdBu")))+
  scale_fill_gradientn(colours = rev(RColorBrewer::brewer.pal(11,"RdBu")))+
  theme_niwot()+
  theme(legend.position = "bottom")+
  scale_size(guide=NULL)+
  guides(color=guide_colorbar(direction="horizontal",reverse = F,
                              barwidth = unit(17, "cm"),
                              barheight = unit(.5,"cm"))) 
代码语言:javascript
复制
p3 <- df %>% filter(group=="B") %>% 
  ggplot(aes(sample,name,fill=value,color=value))+
  geom_tile(color="grey60",fill="white",size=0.2)+
  geom_text(aes(label=value),size=2.8,color="black",hjust=0.5,vjust=0.5)+
  facet_grid2(group~.,scale="free_y",switch = "y")+
  labs(x = NULL,y = NULL,color=NULL,fill=NULL)+
  scale_color_gradientn(colours = rev(RColorBrewer::brewer.pal(11,"RdBu")))+
  scale_fill_gradientn(colours = rev(RColorBrewer::brewer.pal(11,"RdBu")))+
   theme_niwot()+
  theme(axis.text.x=element_blank())+
  scale_size(guide=NULL)

拼图

代码语言:javascript
复制
p3/p2+plot_layout(heights=c(2,1.2))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ❝最近在进行绘图实战颇有感触,今天来介绍一下如何使用「ggplot2绘制组合热图」,有时我们如果只想对部分数据进行热图形式的展示可以用到这种类型的图表;绘图过程倒也简单主要是选择好合适的展示场所
  • 定义主题
  • 加载数据
  • 数据清洗
  • 绘制文本热图
  • 绘制组合热图
  • 拼图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档