ggplot2自定义离散型热图图例

2024-02-22 11:37:06 浏览数 (2)

本节来介绍ggplot2绘制中图例设置方面的问题,通过一个热图的案例进行阐述。整个过程仅参考,希望对各位观众老爷能有所帮助。

ggplot2中的图例体系

❝在ggplot2中针对图例的自定义设置可通过guide与guides函数来完成,二者虽只有一字之差具体参数上也基本一致,但是使用时却也有些许不同。 ❞

guide函数作为scale_类函数中的一个内函数,通常配合比例尺函数一起使用,但是由于取其内含有众多的参数,因此在比例尺中使用则会显得代码比较臃肿,因此小编比较推荐单独使用guides函数来进行图例自定义。

「guides函数中常使用的主要有 guide_legend 和 guide_colourba」两类

  • guide_legend:用于定义离散型数据图例
  • guide_colourba:用于定义连续型数据图例

❝因此在使用前需针对图例所对应的几何对象来选择正确的函数,同时在实际绘图过程中图例绘制还存在一种情况,即数据为连续型但是在绘制图例将其定义为离散型。针对这种情况上方所列的两个函数就无法实现。这时就可使用「guide_colorsteps」函数来实现,该函数可将区域显示为单一恒定颜色,而不是从颜色条对应项中已知的渐变。下面就通过此函数来自定义设置图例 ❞

加载R包

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

df <- read_tsv("data.tsv") %>% drop_na() %>% 
  pivot_longer(-gene)

df$gene <- factor(df$gene,levels = df$gene %>% unique() %>% rev())
  
df %>% 
  ggplot(.,aes(name,gene,color=value,fill=value)) 
  geom_tile(color="black") 
  scale_x_discrete(expand=c(0,0),position = 'top') 
  scale_y_discrete(expand=c(0,0)) 
  scale_fill_gradientn(colors=met.brewer("Cassatt1")) 
  labs(x=NULL,y=NULL)  
  theme(axis.text.x=element_blank(),
        axis.text.y=element_text(color="black",size=8,face="italic"),
        axis.ticks.x=element_blank(),
        axis.ticks.y=element_blank(),
        panel.background = element_blank(),
        plot.background = element_blank(),
        legend.spacing.x = unit(0.1,"cm"),
        panel.spacing.x =unit(0.01,"cm"),
        panel.border=element_rect(fill=NA,color="black",size=0.5,linetype="solid"),
        plot.margin=unit(c(0.2,0.2,0.2,0.2),units="cm")) 
        # title.position 设置图例标题位置
  guides(fill = guide_colorsteps(title.position = "top",
         show.limits = TRUE), # 显示了数据的最小值和最大值
         color="none") # 剔除颜色图例

0 人点赞