单细胞绘图系列:
Seurat是分析单细胞数据一个非常好用的包,自带非常优秀的绘图函数,见Seurat绘图函数总结。但是图片有些地方需要改善的地方,默认的调整参数没有提供。Seurat的画图底层是用ggplot架构的,所以可以用ggplot的参数进行调整。
1. UMAP/TSNE聚类图的修饰
1.1 使用ggplot2绘制UMAP/TSNE图
可以更灵活的更改颜色等参数
library(tidyverse)
#提取UMAP坐标信息方法1:
mydata = pbmc@reductions$umap@cell.embeddings %>%
as.data.frame() %>% cbind(cell_type = pbmc@meta.data$cell_type)
#提取UMAP坐标信息方法2:
mydata<- FetchData(pbmc,vars = c("UMAP_1","UMAP_2","cell_type"))
## 使用 ggplot 绘图
jpeg(file = "UMAP_by_cluster.jpg", width = 7, height = 7, units = "in", res = 600)
ggplot(mydata, aes(x = UMAP_1, y = UMAP_2, color = cell_type)) +
geom_point(size = 0.5, alpha = 1) +
scale_color_manual(values=c("brown3", "chartreuse3", "khaki1", "plum1", "lightskyblue", "darkorange", "hotpink", "seashell3", "lightblue2"))+
guides(colour=guide_legend(override.aes=list(size=10)))+ #改标签大小
theme(axis.text.y = element_blank(), #去掉y轴刻度注释
axis.ticks.y = element_blank(), #去掉y轴刻度
axis.text.x = element_blank(), #去掉x轴刻度注释
axis.ticks.x = element_blank())+ #去掉x轴刻度
theme(panel.border = element_rect(fill=NA,color="black", size=1, linetype="solid"))+ #加边框
theme(panel.background = element_rect(fill = "white")
)
dev.off()
ggplot2颜色参考:http://sape.inf.usi.ch/quick-reference/ggplot2/colour
图形颜色选取
在线颜色值转换(颜色英文名称/R.G.B/十六进制颜色编号)
1.2 直接使用DimPlot()
函数通过参数调整来优化
Seurat的画图底层是用ggplot架构的,可以直接对接ggplot2的theme函数。
DimPlot(pbmc, label = T)+
NoLegend()+labs(x = "UMAP1", y = "UMAP2") + #更改横纵坐标名称
theme(axis.text.y = element_blank(), #去掉y轴刻度注释
axis.ticks.y = element_blank(), #去掉y轴刻度
axis.text.x = element_blank(), #去掉x轴刻度注释
axis.ticks.x = element_blank())+ #去掉x轴刻度
theme(panel.border = element_rect(fill=NA,color="black", size=1, linetype="solid")) #加边框
更改配色
- 直接对接paletteer或RColorBrewer的颜色,通过DimPlot()中的
cols参数
传入。(这里用了ggsci的颜色)
library(paletteer)
col <- paletteer_d("ggsci::nrc_npg")[c(1,3,4,9,5,2,6,8,10)] #有几群细胞需要标记就选几种颜色
p1=DimPlot(pbmc, label = T,
cols= col, #设置颜色
pt.size = 1.5,#设置点的大小
repel = T)+
NoLegend()
library(RColorBrewer)
col <- c(brewer.pal(9, "Set1"))
p2=DimPlot(pbmc, label = T,
cols= col, #设置颜色
pt.size = 1.5,#设置点的大小
repel = T)+
NoLegend()
p1|p2
当然也可以直接设置颜色
col <- c("darkolivegreen2","lightpink","lightblue2","#00F5FF","#FFA500","plum2","#FF6A6A","#7FFFD4", "#AB82FF")
DimPlot(pbmc, label = T,
cols= col, #设置颜色
pt.size = 1.5,#设置点的大小
repel = T)+
theme(axis.text.y = element_blank(), #去掉y轴刻度注释
axis.ticks.y = element_blank(), #去掉y轴刻度
axis.text.x = element_blank(), #去掉x轴刻度注释
axis.ticks.x = element_blank())+ #去掉x轴刻度
theme(panel.border = element_rect(fill=NA,color="black", size=1, linetype="solid")) +
NoLegend()
2. 更改小提琴图横坐标顺序
如果不加设定,小提琴图横坐标默认是以字母顺序排序(下面这个已经定义好level)。
VlnPlot(pbmc, features = c("CD3D"))
如果相对小提琴图横坐标顺序进行调整,需要重新定义level。
My_levels <- c( "DC", "Memory CD4 T", "CD8 T","CD14+ Mono", "B","FCGR3A+ Mono", "NK","Naive CD4 T", "Platelet")
Idents(pbmc) <- factor(Idents(pbmc), levels= My_levels)
3. ggplot2画tSNE的聚类点图(带圈带阴影)
https://mp.weixin.qq.com/s/itt_LvNWH7iHbjdaqY7JOw
4. FeaturePlot更改颜色,主题,边框等
##画一个文献里常用配色
library(viridis)
FeaturePlot(pbmc,features = "CD3D", coord.fixed = T, order = T, cols = viridis(10))
⚠️设置coord.fixed = T
可以固定图片横纵坐标轴
⚠️viridis包能和ggplot完美结合使用:离散颜色可用scale_color_viridis()
;连续颜色可用scale_fill_viridis()
。
添加主题(ggplot2的主题都可以用,见ggplot2主题函数。)
#更改颜色
p1=FeaturePlot(object = pbmc, features = c('CD3D'),
cols = c("lightgrey" ,"#DE1F1F"),
slot = "data",label.size = 6,pt.size = 1.2) +
guides(color=F)
#还可以将通过rgb颜色改个透明度
p2=print(FeaturePlot(object = pbmc, features = c('CD3D'),cols = c(rgb(220,212,213,180,maxColorValue = 255),rgb(174,27,52,50, maxColorValue = 255)),slot = "scale.data",label.size = 6,pt.size = 1.5,min.cutoff = "q10", max.cutoff = "q90") + theme(axis.line = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank()))
p1|p2
5. 气泡图
直接对接viridis包进行颜色调整
DotPlot(pbmc, features = markers, group.by = "cell_type") +
coord_flip() +
scale_color_viridis()+RotatedAxis()
对接ggplot2的theme()进行更精细的调整
markers <- c('CD3D','CD3E','CD4','CD8A','GZMA','NKG7','CD79A','S100A8','S100A9')
DotPlot(pbmc, features = markers)+coord_flip()+theme_bw()+#去除背景,旋转图片
theme(panel.grid = element_blank(),
axis.text.x=element_text(angle=90,hjust = 1,vjust=0.5))+#文字90度呈现
scale_color_gradientn(values = seq(0,1,0.2),colours = c('#330066','#336699','#66CC66','#FFCC33'))+#颜色渐变设置
labs(x=NULL,y=NULL)+guides(size=guide_legend(order=3))
6. 堆叠小提琴图
install.packages("remotes")
remotes::install_github("lyc-1995/MySeuratWrappers")#通过链接安装包
library(MySeuratWrappers)
#需要展示的基因
markers <- c('CD3D', 'S100A8', 'S100A9', 'CD79A', 'CCL5', 'NKG7', 'GZMA', 'IL32', 'CD4', 'CD8A', 'LTB', 'FCN1', 'MS4A1', 'SPON2','FCER1A','SERPINF1', 'TMEM40', 'CD3E')
#颜色:和UMAP图一致
col <-c('#E5D2DD', '#53A85F', '#F1BB72', '#F3B1A0', '#D6E7A3', '#57C3F3', '#476D87', '#E95C59', '#E59CC4', '#AB3282', '#23452F', '#BD956A', '#8C549C', '#585658', '#9FA3A8', '#E0D4CA', '#5F3D69', '#C5DEBA', '#58A4C3', '#E4C755', '#F7F398', '#AA9A59', '#E63863', '#E39A35', '#C1E6F3', '#6778AE', '#91D0BE', '#B53E2B', '#712820', '#DCC1DD', '#CCE0F5', '#CCC9E6', '#625D9E', '#68A180', '#3A6963', '#968175')#颜色设置
VlnPlot(pbmc, features = markers,
stack=T,pt.size=0,
cols = col,#颜色
direction = "horizontal", #水平作图
x.lab = '', y.lab = '')+#横纵轴不标记任何东西
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank())#不显示坐标刻度
网友评论