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

circlize优雅绘制环状热图

作者头像
R语言数据分析指南
发布2023-11-20 16:32:50
2310
发布2023-11-20 16:32:50
举报

加载R包

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

导入数据

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

数据清洗

代码语言:javascript
复制
mat1 <- df %>% select(-group) %>% column_to_rownames(var="sample")
df$group <- factor(df$group,levels = df$group %>% unique())
split <- df$group 

定义颜色

代码语言:javascript
复制
col_fun1 = colorRamp2(c(-2,0,2),c("#E18727FF","white","#20854EFF"))

设置图形布局

代码语言:javascript
复制
circos.clear()

circos.par(canvas.xlim=c(-1,1),canvas.ylim=c(-0.5,1),
           start.degree = 165,
           start.degree = 0, 
           gap.after=c(2,2,2,200))

绘制热图

代码语言:javascript
复制
circos.heatmap(mat1, split = split,
               col = col_fun1,
               rownames.side="outside",
               track.height = 0.5,
               rownames.col="black",
               rownames.cex=0.5,
               rownames.font=1,
               bg.border = "white",show.sector.labels = F)

添加文本

代码语言:javascript
复制
circos.track(track.index = get.current.track.index(),
             panel.fun = function(x, y) {
               if(CELL_META$sector.numeric.index == 4) {
                 cn = colnames(mat1)
                 n = length(cn)
                 circos.text(rep(CELL_META$cell.xlim[1],n) + convert_x(45,"mm"),
                             1:n, cn, col="blACK",
                             cex = 0.6, adj = c(0,1),facing = "inside")
               }
             })

添加分组

代码语言:javascript
复制
circos.trackPlotRegion(ylim = c(0,0.1),track.height = 0.08,
                       panel.fun = function(x, y) {
                         chr = CELL_META$sector.index
                         xlim = CELL_META$xlim
                         ylim = CELL_META$ylim
                         circos.text(mean(xlim),mean(ylim),chr,cex = 1,
                                     col = "black",facing = "outside", niceFacing = F)
                         
                       })

绘制图例

代码语言:javascript
复制
lgd = Legend(title = "expression",col_fun = col_fun1, direction = "horizontal",
             legend_width = unit(8,"cm"))

draw(lgd,x = unit(0.5,"npc"),y = unit(0.95,"npc"))

❝此图只是叠加了两层注释信息,实际分析中有更多信息的还可以继续叠加;有需要学习数据可视化的朋友,欢迎到小编的「淘宝店铺」 「R语言数据分析指南」下单购买,内容主要包括各种「高分论文的图表分析复现以及一些个性化图表的绘制」均包含数据+代码; ❞

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 加载R包
  • 导入数据
  • 数据清洗
  • 定义颜色
  • 设置图形布局
  • 绘制热图
  • 添加文本
  • 添加分组
  • 绘制图例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档