投稿问答最小化  关闭

万维书刊APP下载

复现《Cell》图表:双侧柱状图及坐标轴设置|ComplexHeatmap图例设置

2022/5/26 8:40:46  阅读:348 发布者:

还是复现《cell》文章的图标,是一个对于临床特征的展示,图形是柱状图结合分组注释,图的内容比较丰富,还是比较复杂的。不知道原文作者是如何做的,这里我是结合ggplot2做柱状图,Complexheatmap做的热图注释。

从这个图要学的内容有:

1、双侧柱状图的做法及其坐标轴的设置。

2、热图其他参数在热图系列已经出现,这里学习legend的位置设置。

复现

注释代码及数据已上传群文件!

这里作图数据一部分是结合原文给出的补充材料,一部分是我自己创造的。柱状图和热图是两个文件。首先完成柱状图的部分:

setwd("E:/生物信息学/复现Cell双向柱状图加注释")

A <- read.csv("AA.csv", header = T)

library(ggplot2)

library(tidyverse)

A<-gather(A,key=Sample,value=value,-锘縞ase_id)

A[which(A$Sample == 'Myeloid'),'value'] <-

  A[which(A$Sample == 'Myeloid'), 'value'] * -1  

p1 <-ggplot(A,aes(锘縞ase_id,value,fill=Sample))+

  geom_col()+

  theme_bw()+

  theme(panel.grid.major=element_blank(),

        panel.grid.minor=element_blank(),

        panel.border = element_blank(),

        legend.title = element_blank(),

        axis.text = element_text(color="black",size=10),

        axis.text.x = element_blank(),

        axis.ticks.x = element_blank(),

        axis.line.y = element_line(color = "black",, size=0.5))+

  scale_y_continuous(breaks = seq(-10, 10, 10),

                     labels = as.character(abs(seq(-10, 10, 10))),

                     limits = c(-10, 10))+

  labs(x='', y='')+

  geom_hline(yintercept = 0,size=0.5)+

  scale_fill_manual(values = c("#D08E8E","#89B9D8"))

  p1

然后利用ComplexHetamap完成注释和离散热图的绘制。(也许有其他的办法能够更好的注释,但是这里我想用这个热图)

B <- read.csv("BB.csv", header = T)

B1 <- B[,c(1,6)]

B1 <- t(B1)

B1 <- as.data.frame(B1)

colnames(B1) <- B1[1,]

B1 <- B1[-1,]

library(ComplexHeatmap)

B2 <- B[,1:5]

rownames(B2) <- B2[, 1]

B2 <- B2[,-1]

top_anno=HeatmapAnnotation(df=B2,

                           border = T,

                           show_annotation_name = T,

                           col = list(histology_diagnosis=c('PDAC'='#006699',

                                              'Adenosquamous carcinoma'='red')))

p2 <- Heatmap(B1,

        cluster_rows = F,

        cluster_columns = F,

        show_column_names = T,

        show_row_names = T,

        column_title = NULL,

        heatmap_legend_param = list(

          title='Disease\nassociation'),

        col = c("#1084A4",

                "#8D4873"),

        border = 'black',

        row_names_gp = gpar(fontsize = 12),

        column_names_gp = gpar(fontsize = 8),

        top_annotation = top_anno)

p3 <- draw(p2, heatmap_legend_side = "bottom",

     annotation_legend_side = "bottom",merge_legend = TRUE)

最后就是组合,还是强烈建议使用AI组合吧,很方便!

转自:KS科研分享与服务

如有侵权,请联系本站删除!


  • 万维QQ投稿交流群    招募志愿者

    版权所有 Copyright@2009-2015豫ICP证合字09037080号

     纯自助论文投稿平台    E-mail:eshukan@163.com