投稿问答最小化  关闭

万维书刊APP下载

复现NC图表:ggplot做热图|数据处理|图表设置

2022/7/8 14:20:27  阅读:398 发布者:

今天学做一下一篇NC文章的figure1b,是一个热图,特点是FC高低用连续色彩表示,块的大小表示P值大小,这里我们用ggplot尝试做一下。

ReferenceSenescent cells limit p53 activity via multiple mechanisms to remain viable

NC文章原文作者提供了作图数据,本片文章的示例数据和注释代码我们已上传群文件,群成员可免费在群内获取!

首先分别读入FCP值文件:

setwd("D:/热图")

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

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

作者提供的是宽数据,转化为ggplot作图需要的长数据:

library(tidyr)

FC <-gather(FC, gene, FC, 2:5)

FC

pvalue <-gather(pvalue, gene, pvalue, 2:5)

pvalue

pvalue <- as.data.frame(pvalue[,3])

这里注意,作者提供的legend显示是-11,但是数据的log2FC并不是这样,所以我将其转化了一下,缩放到-11,但是结果与文章有初入,不太明白这里的原因:

library(dplyr)

library(scales)

FC <- FC %>%

  group_by(log2..fold.change.) %>%

  mutate(Data = rescale(FC, to = c(-1, 1))) %>%

  ungroup

FC <- FC[,-3]

最后合并数据:

data <- cbind(FC, pvalue)

colnames(data) <- c("group",'gene','FC','pvalue')

处理行名:

library(tidyverse)

data <- separate(data = data, col = group, into = c("sh", "group"), sep = "sh")

data <- data[,-1]

-log10P设置因子水平:

data$P[which(data$pvalue >0)] = '>0'

data$P[which(data$pvalue >1.3)] = '>1.3'

作图:

library(forcats)

data$group <- as.factor(data$group)

data$group <- fct_inorder(data$group)

library(ggplot2)

ggplot(data=data,aes(x=gene,y=group))+

  geom_point(aes(size=P,

                 fill=FC),

             shape=22, color='grey80')+

  scale_fill_gradient2(low="#445393", high="#EE2627", mid="white")+

  theme_bw()+

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

        panel.grid.minor= element_blank(),

        plot.title = element_text(hjust = 0.5, size = 12),

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

        axis.text.x.top=element_text(angle=90,hjust = 0,vjust = 0.1,

                                     color = 'black',size = 10),

        axis.ticks = element_blank(),

        legend.key.size = unit(0.15, "inches"))+

  labs(x="",y=NULL)+

  scale_size_discrete(range=c(2,8))+

  scale_x_discrete(position = 'top')

效果还是差不多的,只不过细节之处需要精雕细琢!

转自:KS科研分享与服务

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


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

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

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