
图片
并且基于pbmc3k的数据,使用Dotplot进行可视化和简单调整。这期一起来了解一下,使用Dotplot参数调整美化结果,以及基于ggplot2进行可视化
图片
Dotplot可视化及美化示例数据为pbmc-3k的注释分群后的数据,使用FindAllMarkers查找并获取top5的Marker基因进行可视化
#top5 marker基因获取pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25, verbose = FALSE)top5 = pbmc.markers %>% group_by(cluster) %>% top_n(n = 5, wt = avg_log2FC)g = unique(top5$gene)默认参数绘图及调整美化
如果直接使用默认参数,不调节参数展示的情况
DotPlot(pbmc, features = g)
图片
可以看到横坐标中features展示列全部挤在了一起,不便于阅读。因为Dotplot绘图是基于ggplot2的语法结构的,所以可以调用ggplot2包里面的函数去倾斜展示基因,或者将基因和细胞亚群调换位置的方式进行调整
1. 调节features的排列角度使用RotatedAxis()函数将坐标轴标签旋转,让features列展示的基因,由最开始的平铺变为倾斜,方便阅读
DotPlot(pbmc, features = g) + RotatedAxis()
图片
不过RotatedAxis()函数里面角度是确定了的,如果需要根据自己的需求调整角度可以使用theme()函数来调整x轴的具体倾斜角度
图片
DotPlot(pbmc, features = g) + theme(axis.text.x=element_text(angle=70,hjust = 1))
图片
2.将features和identity调换位置
使用coord_flip()函数翻转坐标轴,使得图形的布局更加合理。使用RotatedAxis()函数旋转坐标轴标签,以便更好地展示和阅读。DotPlot(pbmc, features = g) + coord_flip()+ RotatedAxis()
图片
3. 分组展示Marker基因
使用split函数按照基因列表以及分类列表进行分组,Marker基因将根据它们所属的群组(cluster)被分组显示。基于cols函数指定点图的颜色使用RotatedAxis函数将x轴标签旋转基于theme函数去调整坐标轴,设置文本颜色和大小、添加边框、调整间距等DotPlot(pbmc, features = split(top5$gene, top5$cluster), cols = c("#ffffff", "firebrick3")) + RotatedAxis() + theme( strip.text.x = element_text(size = 8), axis.text.x = element_text(color="black",size=10), panel.border = element_rect(color = "black"), panel.spacing = unit(1, "mm"), axis.title = element_blank(), axis.text.y = element_blank(), )
图片
使用ggplot2绘图及美化已经有很多推文基于ggplot2去可视化及美化点图:
比如咱们生信菜鸟团的Dotplot美化——使用ggplot2基于结果美化生信益站的Seurat::DotPlot美化 (二) ——细胞亚群坐标轴Color Bar注释那这边小谢就偷个懒,基于前辈们整理好的代码来使用ggplot2绘制marker基因的点图。
1. 提取数据并整理细胞亚群排序#获取需要的数据p <- DotPlot(pbmc, features = split(top5$gene, top5$cluster), cols = c("#ffffff", "firebrick3")) #重新整理细胞亚群的排列,倒序排列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"))
图片
p图片
p$data2. 使用ggplot2绘图ggplot2绘图相关的内容是需要反复练习的,如果没有R语言基础想要系统学习的话,可以了解一下生物信息学马拉松授课,最近一期在广州线下,欢迎大家来广州相聚!
## 加载R包定义图例颜色----library(ggh4x)library(RColorBrewer)strip <- strip_themed( background_x = elem_list_rect(fill = brewer.pal(9, "Paired")))## 可视化----p1 <- 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() + RotatedAxis()+ theme(strip.text.x = element_text(size = 8), axis.text.x = element_text(color="black",size=10), axis.title = element_blank(), strip.background = element_rect(color = "white"), axis.text.y = element_blank()) + scale_color_gradient(low = "#ffffff", high = "firebrick3", name = "avg.exp")p1
这样就得到了带有背景颜色图例的结果,为了简洁将左边的细胞亚群标签信息使用axis.text.y = element_blank()不进行展示,当然我们也可以调整之后,将y轴的图例加上
图片
3. 整理y轴标签## 图例信息----library(ggplot2)df <- data.frame(x = 0, y = levels(pbmc), stringsAsFactors = F )df$y <- factor(df$y, levels = df$y )#通过shape选择自己想要的图例形状p2 <- ggplot(df, aes(x, y, color = factor(y))) + geom_point(size = 6, shape = 18, 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() )p2
选择了shape=18的实心菱形
图片
然后将整理好的图例和点图拼接到一起即可
library(cowplot)plot_grid(p2, p1, align = "h", axis="bt", rel_widths = c(1.5, 9))
图片
小结这期基于ggplot2在Dotplot结果的基础上进行调整,以及提取Dotplot的结果数据,使用ggplot2进行美化和可视化
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。下一篇:没有了