アメリエフの技術ブログ

Amelieff Staff Blog

【シングルセル解析】凡例の順番を変える【Seurat】

皆様こんにちは、受託コンサルティングチームのkazsakです。
本日はRパッケージSeuratを用いたシングルセル解析の可視化における、凡例の操作方法についてご紹介しようと思います。

作業環境

  • Ubuntu 20.04.1 LTS
  • R v4.3.3
    • Seurat v5.1.0
    • ggplot2 v3.5.1

使用データ

ヒト末梢血単核球(PBMC)5,000細胞のデータを使用しました。
Seuratのチュートリアルに従い前処理を進め、Seuratオブジェクトpbmcを作成し、正規化・次元削減・クラスタリングを行いました。

UMAPの凡例の順番を変える

前処理後、UMAPを描きます。
UMAPの描画にはSeuratのDimPlot関数を使います。

p <- DimPlot(object = pbmc, reduction = 'umap')                                                                                                                      
ggsave("umap_cluster.pdf")


0-10の11個のクラスタに分かれました。続いて、個々のクラスタで発現しているマーカー遺伝子から細胞種を同定したので、それぞれのクラスタに細胞ラベルを付けたいと思います。
クラスタにセルタイプ情報を反映するには、RenameIdents関数を使います。

new.cluster.ids <- c("CD4 T", "CD14 Mono", "NK", "CD8T", "B", "CD4 T", "Unknown", "DC", "CD4 T", "Platelet", "NK")
names(x = new.cluster.ids) <- c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
pbmc <- RenameIdents(object = pbmc, new.cluster.ids)
p <- DimPlot(object=pbmc, label=TRUE, reduction="umap")
ggsave("umap_celltype.pdf",p)



細胞種のラベル付けができました。めでたしめでたし、と言いたいところなのですが・・ 凡例の順番が気になります。できればUnknownを一番下に持っていき、その他の細胞の順番も整理したいです。
また、ラベルを付けた影響でグラフが少々縦長になっている点も気になります。

ここからがやっと本題です。Seuratで凡例の順番を変えるには、Idents関数を使います。 Idents関数はSeuratオブジェクトの個々の細胞のアイデンティティクラス(細胞種や状態、クラスター情報など)を取得・設定・操作が可能です。
試しに現在のpbmcオブジェクトを確認すると、

head(Idents(pbmc))
AAACCCATCAGATGCT-1 AAACGAAAGTGCTACT-1 AAACGAAGTTGCCAAT-1 AAACGAATCCGAGGCT-1 
             CD4 T              CD4 T              CD4 T                  B 
AAACGAATCGAACGCC-1 AAACGAATCGCCTTGT-1 
              CD8 T                  B 
Levels: CD4 T CD14 Mono NK CD8 T B Unknown DC Platelet


Levels:に各細胞種のレベルが表示されており、凡例もこの順になっていることがわかります。
この順番を変えてみようと思います。

Idents(pbmc) <- factor(x = Idents(pbmc), levels = c("CD4 T", "CD8 T", "CD14 Mono", "B", "NK", "DC", "Platelet", "Unknown"))
head(Idents(pbmc))
AAACCCATCAGATGCT-1 AAACGAAAGTGCTACT-1 AAACGAAGTTGCCAAT-1 AAACGAATCCGAGGCT-1 
             CD4 T              CD4 T              CD4 T                  B 
AAACGAATCGAACGCC-1 AAACGAATCGCCTTGT-1 
             CD8 T                  B 
Levels: CD4 T CD8 T CD14 Mono B NK DC Platelet Unknown


Levels:が修正できました。では、プロットのついでに、グラフが縦長になっている問題を解決しようと思います。 グラフの縦横比の調整には、ggplot2パッケージのcoord_fixed関数が便利です。

p <- DimPlot(object = pbmc, label = TRUE, reduction = "umap") + coord_fixed(ratio = 1)
ggsave("umap_celltype_fixed.pdf", p)


凡例の順番が整理され、x:y軸の比率が1:1となったUMAPが描画できました!
プロットが意味する情報は同じとはいえ、できれば見やすく、カッコいいプロットを描きたいですよね。
今回ご紹介したのは一例で、プロットの描画にはこのほかにも様々なtipsが存在します。
アメリエフのバイオインフォマティクス解析コンサルティングサービスでは、データ可視化の際の細かいリクエストにもお応えできますので、可視化にお困りの方は是非、お問い合わせください。


シングルセルRNA-seq解析キャンペーン