这个图分别选取了两组差异基因相比上调与下调的基因来进行绘图。简言之,展示了每一个出现在差异基因表中的差异基因在不同celltype中共表达的情况,每一格代表一个celltype,红色代表上调的基因,蓝色代表下调的基因。如何做出来的差异基因比较,见我主页的另一片文章《单细胞多组差异基因上下调统计热图展示代码示例》。
代码展示环节:
首先加载r包与数据:
```
library(dplyr)
library(reshape2)
library(ggplot2)
library(colorspace) #加载渐变色的包
library(patchwork)
data <- read.csv("P0_VS_AD.csv",sep = ",",row.names = 1) %>% .[.$p_val_adj < 0.05,]
data_up <- data[data$avg_log2FC > 0.25,]
data_down <-data[data$avg_log2FC <= -0.25,]
up <- as.data.frame.array(table(data_up$gene,data_up$cluster))
```
这样,我们就得到了上调的基因在每个celltype的出现情况:
随后,我们选取共同出现次数为7,8,9,10,11的基因来绘图。
```
up$sum <- apply(up,1,sum)
up <- up[up$sum %in% c("7","8","9","10","11"),] %>% .[order(as.numeric(.$sum)),-c(12)] #筛选&排序
up <- as.data.frame(t(up))
up$celltype <- rownames(up)
```
现在的数据可以用来画图,列是基因,行是celltype。
利用ggplot绘图:
```
data <- melt(up,id.vars = 'celltype')
color1 <- rev(colorspace::sequential_hcl(n = 11, palette = "Red"))
p1 <- ggplot(data,aes(variable,value,fill=celltype))+
scale_fill_manual(values=color1) +
geom_bar( position = "stack",stat = "identity",width = 0.7)+theme_bw()+
coord_polar()+
theme(axis.text.x = element_text(vjust = 1, hjust = 1,angle = 45),
axis.text.y = element_blank(),
axis.line = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(), # 删除坐标线
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank())
```
同理,下调的也是这样,把上调与下调的加起来就得到了刚开始展示的图。
```
down <- as.data.frame.array(table(data_down$gene,data_down$cluster))
down$sum <- apply(down,1,sum)
down <- down[down$sum %in% c("7","8","9","10","11"),] %>% .[order(as.numeric(.$sum)),-c(12)]
down <- as.data.frame(t(down))
down$celltype <- rownames(down)
data <- melt(down,id.vars = 'celltype')
color1 <- rev(colorspace::sequential_hcl(n = 11, palette = "Blue"))
p2 <- ggplot(data,aes(variable,value,fill=celltype))+
scale_fill_manual(values=color1) +
geom_bar( position = "stack",stat = "identity",width = 0.7)+theme_bw()+
coord_polar()+
theme(axis.text.x = element_text(vjust = 1, hjust = 1,angle = 45),
axis.text.y = element_blank(),
axis.line = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(), # 删除坐标线
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank())
p <- p1 + p2
ggsave("deg_gene.pdf",p,width = 20,height = 10)
```