Closed ixxmu closed 8 months ago
大海哥也教了不少有关单细胞数据可视化的方式,但是没有讲解一些专门对细节美化的,这次大海哥带来一种Dotplot美化的教程,可以让小伙伴单细胞的数据使用Dotplot可视化的时候,绘制自己的图更加精美!其实这个Dotplot图呢,就是点图/气泡图是类似热图的图表,它提供了一种紧凑的方式,通过不同大小和颜色的点同时显示两个定量信息。尽管这种可视化方法很受欢迎,特别是在单细胞 RNA 测序 (scRNA-seq) 研究中,但用于制作点图的现有工具在功能和可用性方面受到限制。
同时呢,我们通常使用的是Seurat::DotPlot可视化方式,这个Seurat::DotPlot 是可视化 Marker 基因如何跨不同 cluster 变化的直观方式。
这个图里面的点的大小编码一个类中细胞的百分比,而颜色编码一个类中所有细胞的 AverageExpression 水平。
了解了这个图的构成,我们就去为Dotplot图进行美化吧!
我们使用的是R包scRNAtoolVis自带的数据pbmc,先看一下我们前期准备吧
library(scRNAtoolVis) # 为了使用数据library(Seurat) # dotplotlibrary(cowplot) # plot_grid
加载下数据:
httest <- system.file("extdata", "htdata.RDS", package = "scRNAtoolVis")pbmc <- readRDS(httest)# add groups pbmc$groups <- rep(c('stim','control'),each = 1319)# add celltypepbmc$celltype <- Seurat::Idents(pbmc)# load markergenedata("top3pbmc.markers")# checkhead(top3pbmc.markers,3)
我们一步一步来,从基础的散点图开始,
library(ggplot2)
p <- DotPlot(pbmc,
features = split(top3pbmc.markers$gene, top3pbmc.markers$cluster),
cols = c("#ffffff", "#448444")
) +
RotatedAxis() + # 来自Seurat
theme(
panel.border = element_rect(color = "black"),
panel.spacing = unit(1, "mm"),
axis.title = element_blank(),
axis.text.y = element_blank(),
)
P
为了让小伙伴更清楚的知道如何绘制,我们使用ggplot2从头开始绘制:
p$data$feature.groups2 <- factor(p$data$feature.groups,
levels = c("Platelet","DC","NK",
"FCGR3A+ Mono","CD8 T","B",
"Memory CD4 T","CD14+ Mono","Naive CD4 T"))
library(ggh4x)
strip <- strip_themed(
background_x = elem_list_rect(fill = brewer.pal(9, "Paired")))
把数据设置好后,下面开始绘制图
p$data %>%
ggplot(aes(x = features.plot,
y = id)) +
geom_point(aes(size = pct.exp,
color = avg.exp.scaled)) +
facet_wrap2(~feature.groups2,
scales = "free_x",
strip = strip,
nrow = 1) +
theme_classic() +
theme(axis.text.x = element_text(angle = 90,
hjust = 0.5,
vjust = 0.3,
color = "black"),
axis.title = element_blank(),
strip.background = element_rect(color = "white"),
axis.text.y = element_blank()) +
scale_color_gradient(low = "#ffffff",
high = "#448444",
name = "avg.exp") -> p
p
这个图其实已经很好看了,但是中间细节呢,我们想改一下,比如气泡的样式等等
来看一下散点图的修饰
#散点图修饰
df <- data.frame(x = 0, y = levels(pbmc), stringsAsFactors = F )
df$y <- factor(df$y, levels = df$y )
pl <- ggplot(df, aes(x, y, color = factor(y))) +
geom_point(size = 6, show.legend = F) +
scale_color_manual(values = rev(brewer.pal(9, "Paired"))) +
theme_classic() +
scale_x_continuous(expand = c(0,0)) +
theme(
plot.margin = margin(r=0),
axis.title = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_text(size = 9),
axis.ticks = element_blank(),
axis.line = element_blank()
)
Pl
从点开始修改,我们修改成矩形:
#改变形状
pl2 <- ggplot(df, aes(x, y, color = factor(y))) +
geom_point(size = 6, shape = 15, show.legend = F) +
scale_color_manual(values = rev(brewer.pal(9, "Paired"))) +
theme_classic() +
scale_x_continuous(expand = c(0,0)) +
theme(
plot.margin = margin(r=0),
axis.title = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_text(size = 9),
axis.ticks = element_blank(),
axis.line = element_blank()
)
pl2
然后我们在使用cowplot函数进行拼图:
#拼图
library(cowplot)
plot_grid(pl2, p, align = "h", axis="bt", rel_widths = c(1.5, 9))
怎么样,有没有学会呢,
下面大海哥在介绍一种绘制的方式FlexDotPlot,
这是一个 R 包,用于从多元数据(包括 scRNA-seq 数据)生成点图。它提供了通用且易于使用的解决方案,具有高度的多功能性。还提供交互式 R Shiny 应用程序,允许非 R 用户轻松生成具有多个可调参数的点图
这个包可以帮助我们改变图形的形状,来看看:
#BiocManager::install("FlexDotPlot")#没有的小伙伴下载一下library(FlexDotPlot)
FlexDotPlot 包采用数据框作为输入:前两列包含沿 x 和 y 轴分布的两个因子,后跟要显示的相应定量和/或定性数据
下面我们加载示例数据
#加载数据
data(PBMC3K_example_data)
head(PBMC3K_example_data)
summary(PBMC3K_example_data)
我们使用月亮的形式去展示
#半月
dot_plot(data.to.plot = PBMC3K_example_data,
size_var = "pct.exp", shape.scale = 25,
shape_var= "pct.exp",
col_var = "avg_logFC",
vertical_coloring=c(NA, "gray80")
)
是不是有点与众不同,我们还可以添加聚类树
#聚类树
dot_plot(data.to.plot = PBMC3K_example_data,
size_var = "pct.exp", shape.scale = 25,
shape_var= "pct.exp",
col_var = "avg_logFC",
dend_x_var = c("pct.exp","avg_logFC"),
dend_y_var = c("pct.exp","avg_logFC"),
dist_method="euclidean", hclust_method="ward.D"
)
其实还有很多的展示形式,小伙伴要多多理解代码的意思,多多摸索,这样才能绘制出自己想要的图片,上面就是我们这次的教程,小伙伴快去动手试试!
大海哥还提供思路设计、定制生信分析、文献思路复现;有需要的小伙伴欢迎直接扫码咨询~
定制生信分析
服务器租赁
扫码咨询大海哥
往期回顾
01 |
02 |
03 |
04 |
https://mp.weixin.qq.com/s/JVvMXeR8K0bgfVBqc0NYIQ