生信益站,一点就有益
!祝友友们天天开心,月月发 CNS~
Mfuzz
包自带的绘图功能特性有限,今天继续给大家画图(完整版)——Mfuzz 聚类+表达热图+通路注释散点图
。
样图如下:
我画的如下(还行吧~):
这里用到的 2 个数据集mfuzz_cluster
,mfuzz_class
均来自这篇推文《代码分享| 使用Mfuzz聚类并进行基因表达趋势(时间序列)分析》:
library(tidyverse)
clusterindex <- mfuzz_cluster$cluster
# data frame with Membership values
memship <- mfuzz_cluster$membership
colnames(memship) <- paste("membership",
seq_along(memship[1,]),
sep = (""))
exp <- exprs(mfuzz_class)
exp <- data.frame(exp ,
Identifier = rownames(mfuzz_class),
clusterindex, memship)
exp <- exp %>%
gather(sample,
expression ,
- Identifier,
- clusterindex,
- contains("membership")) %>%
mutate(Time = gsub("(\\w*\\D+(?=([0-9]+)))|((?<=\\d)\\D+$)",
"",
sample,
perl = TRUE)) %>%
# ABC__00 -> 00
mutate(Time = gsub("^\\D*$", # need changed
"0",
Time,
perl = TRUE)) %>%
mutate(Time = as.numeric(Time))
exp[["maxMembership"]] <- exp %>%
select(contains("membership")) %>%
apply(., 1, max)
exp$clusterindex <- factor(exp$clusterindex, levels= as.character(1:10))
library(ggplot2)
g <- ggplot(data = exp,
aes(x = Time, y = expression)) +
geom_line(
aes(group = Identifier,
colour = maxMembership
),
size = 0.5
) +
scale_colour_gradientn("Membership",
colours = rev(hcl.colors(4, "RdYlGn")),
limits = c(0, 1),
breaks = c(0.1, 0.3, 0.5, 0.7, 0.9))
让每个 cluster 的折线图,垂直方向排列展示。
centers <- mfuzz_cluster$centers %>%
data.frame(.,
clusterindex = rownames(.)) %>%
gather(sample,
Centre,
- clusterindex) %>%
mutate(Time = gsub("(\\w*\\D+(?=([0-9]+)))|((?<=\\d)\\D+$)",
"",
sample,
perl = TRUE)) %>%
# ABC__00 -> 00
mutate(Time = gsub("^\\D*$",
"0",
Time,
perl = TRUE)) %>%
mutate(Time = as.numeric(Time))
centers$clusterindex <- factor(centers$clusterindex, levels=as.character(1:10))
使用分面:
g + geom_line(data = centers, aes(x = Time, y = Centre),color = "grey30") +
scale_x_continuous(expand = c(0, 0)) +
facet_grid(clusterindex ~ .,switch = "y") +
theme_bw() +
theme(legend.position = "top",
axis.title = element_blank(),
axis.ticks = element_blank(),
axis.text.y = element_blank(),
axis.text.x = element_text(hjust = 1),
strip.background = element_blank(),
strip.text.y.left = element_text(angle = 0),
panel.grid = element_blank(),
plot.margin = margin(10,0,0,10,"pt")) +
guides(colour = guide_colourbar(title.position = "top", title.hjust = 0.5)) -> p1
p1
即每个 cluster 的基因表达热图:
exp %>%
ggplot(aes(x = Time, y = Identifier, fill = expression)) +
geom_tile(color = NA) +
scale_fill_gradientn("Expression",
colours = rev(hcl.colors(10, "RdBu")),
limits = c(-1.5, 1.5),
breaks = c(-1.5, -0.75, 0, 0.75, 1.5)) +
scale_x_continuous(expand = c(0, 0)) +
facet_grid(clusterindex ~ .,scales = "free"
) +
theme_bw() +
theme(legend.position = "top",
axis.title = element_blank(),
axis.ticks = element_blank(),
axis.text.y = element_blank(),
strip.text = element_blank(),
strip.background = element_blank(),
panel.grid = element_blank(),
plot.margin = margin(10,0,0,0,"pt")) +
guides(fill = guide_colourbar(title.position = "top", title.hjust = 0.5)) -> p2
p2
需要对每个 cluster 的基因进行富集,然后整理成如下格式——我这里用的GO富集
结果,然后每个 cluster 只展示BP/CC/MF
的top2
,即每个 cluster 只画6个点
:
效果如下:
可试读71%
微信扫一扫
关注该公众号