【R code】Seurat objectから3D PCA plotを作成する方法

解析をしている時に、PCAだけでは情報が足りず、UMAPを使ってクラスターの状況を理解しようとすると思いますが、個人的には3D PCA plotがわかりやすいのではないかと思い、好きです。

しかし、3D PCA plotをRで記載しようとしても、出て来ないのですよね。。

特に、データがSeurat objectでrunPCAしたものを、そのまま3D plotしているのが、見つからず自分で作成しました。

Seurat objectから3D PCA plotを作成するコード

3D plot differenciated by clster

library(plotly)
library(stats)
pca_3d <- Embeddings(object = your.data[["pca"]])
pca_3d <- pca_3d[,1:3]
cluster <- as.character(Idents(your.data))
pca_3d <- cbind(pca_3d, cluster )
pca_3d <- as.data.frame(pca_3d)
plot_ly(pca_3d, x = ~PC_1, y = ~PC_2, z = ~PC_3, color = ~pca_3d$cluster, colors = c('#636EFA','#EF553B','#00CC96')) %>%  add_markers(size = 12)

3D plot differenciated by orig.ident

pca_3d <- Embeddings(object = your.data[["pca"]])
pca_3d <- pca_3d[,1:3]
cluster <- as.character(your.data@meta.data$orig.ident)
pca_3d <- cbind(pca_3d, cluster )
pca_3d <- as.data.frame(pca_3d)
plot_ly(pca_3d, x = ~PC_1, y = ~PC_2, z = ~PC_3, color = ~pca_3d$cluster, colors = c('#636EFA','#EF553B','#00CC96') ) %>%
  add_markers(size = 12)

your.dataを自分のSeurat Object(PCA済のもの)の名前に書き換えるだけで使えます。

コードの中身

1行目 PCAのデータを抽出する

2行目 PCA1~3までを抽出する

3行目 何でplotのカラー分けをするか指定する。(cluster解析でわかれたclusterで色分けするか、元々のデータのサンプル毎で分けるか)

4行目 PCA1~3とその属性(clusterやbatch)をマージさせる

5行目 data.frameに変換

6行目 3D plot;x, y, z軸の指定。色分けの指定

これで私は動きました。

これからは有益な解析のためのcodeも紹介していきたいと思います。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA