使用Seurat 中自带函数画图遇到的问题及解决办法

1.FeaturePlot函数

FeaturePlot使用了split函数之后就没有legend了
这个问题之前困扰了我很久 后来就下定决心解决一下 其实很简单就只是加个命令
参考的是
https://github.com/satijalab/seurat/pull/3748

FeaturePlot(object = obj, features = "Gene", split.by = "Meta_Name", order = T) & theme(legend.position = "right")

这个就是你只是用+是不可以的,那样就只会只改split图中右边的那个图 使用&符号的时候是会两个都改的 是不是很神奇 原来我以前只知道+ 后来才发现还有&这个用法

m_featureplot <- FeaturePlot(M_Aggregated_seurat, features = "Lepr", reduction = "tsne",
                             split.by = "orig.ident", pt.size = 1.8, repel = F, label = F,
                             order = T, max.cutoff = 1)
m_featureplot <- m_featureplot & scale_x_continuous(breaks=seq(-30, 20, 10)) ## 改x轴刻度标签
m_featureplot <- m_featureplot & scale_y_continuous(breaks=seq(-30, 20, 10)) ## 改y轴刻度标签
m_featureplot <- m_featureplot +  theme(axis.text.y = element_blank()) +   ## 删去所有刻度标签
                                  theme(axis.ticks.y = element_blank()) +  ##则只删去 Y 轴的刻度线
                                  theme(axis.line.y = element_blank())
m_featureplot <- m_featureplot + ylab("")

image

2.VlnPlot的堆叠小提琴图

VlnPlot 中有个stack = T
但是这里面有个bug
因为Seurat::VlnPlot有个bug就是当用split的时候 细胞数目小于3个的时候 就不会画出来
后面又自己想加其他数据所以弄得复杂了点
但是我发现个很好用的方法就是直接把p1$data <- final_data 直接替换成我们想画图的数据就可以直接修改图片了

p1 <- Seurat::VlnPlot(F_Aggregated_seurat, features = ImDEGs, group.by = "small_celltype",
                      stack = T, split.by = "orig.ident",
                      fill.by="ident", flip = T, split.plot = F,adjust=1.3, same.y.lims = T)
p1$data$split <- factor(rep(F_Aggregated_seurat$try, length(ImDEGs)), levels = levels_define)

## GABA1 ob/ob 加6个细胞,  GABA2 ob/ob 加4个细胞 GABA6 ob/ob加8个细胞 那样这三个细胞数目很少的细胞总共就有10个细胞了
## 因为Seurat::VlnPlot有个bug就是当用split的时候 细胞数目小于3个的时候 就不会画出来
GABA1_ob <- 6
GABA2_ob <- 4
GABA6_ob <- 8
add_cell_num <- GABA1_ob + GABA2_ob + GABA6_ob
row_num <- nrow(p1$data) + length(ImDEGs)*add_cell_num
col_num <- ncol(p1$data)
original_row <- nrow(p1$data)
try_data <- matrix(0, row_num, col_num)
try_data[1:original_row, 1:col_num] <- as.matrix(p1$data)
colnames(try_data) <- colnames(p1$data)

GABA1_ob_data <- matrix(0, length(ImDEGs) * GABA1_ob, col_num)
GABA1_ob_data[ ,1] <- rep(ImDEGs, GABA1_ob)
GABA1_ob_data[ ,3] <- rep("GABA1", length(ImDEGs) * GABA1_ob)
GABA1_ob_data[ ,4] <- rep("GABA1_ob/ob", length(ImDEGs) * GABA1_ob)
GABA1_ob_row <- (original_row+nrow(GABA1_ob_data))
try_data[(original_row+1):GABA1_ob_row, 1:4] <- GABA1_ob_data

GABA2_ob_data <- matrix(0, length(ImDEGs) * GABA2_ob, col_num)
GABA2_ob_data[ ,1] <- rep(ImDEGs, GABA2_ob)
GABA2_ob_data[ ,3] <- rep("GABA2", length(ImDEGs) * GABA2_ob)
GABA2_ob_data[ ,4] <- rep("GABA2_ob/ob", length(ImDEGs) * GABA2_ob)
GABA2_ob_row <- GABA1_ob_row + nrow(GABA2_ob_data)
try_data[(GABA1_ob_row+1):GABA2_ob_row, 1:4] <- GABA2_ob_data

GABA6_ob_data <- matrix(0, length(ImDEGs) * GABA6_ob, col_num)
GABA6_ob_data[ ,1] <- rep(ImDEGs, GABA6_ob)
GABA6_ob_data[ ,3] <- rep("GABA6", length(ImDEGs) * GABA6_ob)
GABA6_ob_data[ ,4] <- rep("GABA6_ob/ob", length(ImDEGs) * GABA6_ob)
GABA6_ob_row <- GABA2_ob_row + nrow(GABA6_ob_data)
try_data[(GABA2_ob_row+1):GABA6_ob_row, 1:4] <- GABA6_ob_data

try_data <- as.data.frame(try_data)
try_data$feature <- factor(try_data$feature, levels = ImDEGs)
try_data$expression <- as.numeric(try_data$expression)
try_data$ident <- factor(try_data$ident, levels = levels(p1$data$ident))
try_data$split <- factor(try_data$split, levels = levels(p1$data$split))

dim(try_data)

## 加上所有GABA Glu的细胞
All <- FetchData(F_Aggregated_seurat, vars = ImDEGs)
library(reshape)
All <- melt(All)
colnames(All) <- c("feature", "expression")
head(All)
All$ident <- rep(F_Aggregated_seurat$big_celltype, length(ImDEGs))
All_label <- rep(as.character(F_Aggregated_seurat$orig.ident), length(ImDEGs))
All$split <- paste(All$ident, All_label, sep="_")
colnames(All) <- colnames(try_data)
head(All)
dim(All)

final_data <- rbind(try_data, All)
dim(final_data)

final_data$split <- factor(final_data$split,
                           levels = c(levels_define[1:12], 
                                      "GABA_WT", "GABA_ob/ob",
                                      levels_define[13:18],
                                      "Glu_WT", "Glu_ob/ob"))
final_data$ident <- factor(final_data$ident, 
                           levels = c(levels(try_data$ident)[1:6],
                                      "GABA",
                                      levels(try_data$ident)[7:9],
                                      "Glu"))

levels(final_data$split)
levels(final_data$ident)
levels(final_data$feature)

dim(final_data)

p1$data <- final_data
dim(p1$data)
p3 <- p1 + scale_fill_manual(values = c('#F8766D','#F8766D', '#D39200','#D39200',
                                        '#93AA00', '#93AA00', '#00BA38', '#00BA38',
                                        '#00C19F', '#00C19F', '#00B9E3', '#00B9E3',
                                        "#FC8D62", "#FC8D62",
                                        # "#FFFF33", "#FFFF33",
                                        '#619CFF','#619CFF', '#DB72FB','#DB72FB',
                                        '#FF61C3','#FF61C3',
                                        "#E41A1C", "#E41A1C"))
pdf("20210426_Vlnplot_Female_Gene_Related_to_Energy.pdf", 12, 10)
p3
dev.off()

image

3.DotPlot函数的图

dotplot_f_data_1 <- DotPlot(F_Aggregated_seurat, features = rev(ImDEGs),
                       group.by = "try",col.min=-2, col.max=2)$data
head(dotplot_f_data_1)
dim(dotplot_f_data_1)

dotplot_f_data_2 <- DotPlot(F_Aggregated_seurat, features = rev(ImDEGs),
                            group.by = "try2",col.min=-2, col.max=2)$data
head(dotplot_f_data_2)
dim(dotplot_f_data_2)

dotplot_f_data <- rbind(dotplot_f_data_1, dotplot_f_data_2)
head(dotplot_f_data)
dim(dotplot_f_data)
table(dotplot_f_data$id)

p_dotplot_f <- DotPlot(F_Aggregated_seurat, features = rev(ImDEGs),col.min=-2, col.max=2)
p_dotplot_f$data <- dotplot_f_data
p_dotplot_f <- p_dotplot_f + coord_flip()
p_dotplot_f <- p_dotplot_f+ scale_color_gradient2(high="red",mid = "lightgrey",low ="darkblue", midpoint = 0) + theme_classic()+ 
  theme(axis.text.x = element_text(angle = -45,hjust = -0.1,vjust = 0.8)) 
p_dotplot_f$data$id <- factor(p_dotplot_f$data$id,
                              levels = c(levels_define[1:12], 
                                         "GABA_WT", "GABA_ob/ob",
                                         levels_define[13:18],
                                         "Glu_WT", "Glu_ob/ob"))
p_dotplot_f

image

作者:Aji
链接:https://www.jianshu.com/p/a2fe2549cea1

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容