2021年10月4日月曜日

Rによる主成分分析(作図編)

少し間が空きましたが、前回の投稿(Rによる主成分分析)ではggbiplotを用いて主成分分析結果を作図しました。今回はやり方を変えて、グループごとに枠で囲む方法を説明します。使用するデータは前回と同様です。

データの準備

プロットする前にデータを少し編集する必要があります。前回に引き続き、xという変数にアヤメのデータ、pcaという変数にその主成分分析結果が入っているとします。以下にそれぞれの要約を示してみます(図1)。

図1



次にプロット用データを作成し、変数df.pcaへ代入します。今回は第一主成分と第二主成分でプロットするとします。pcaから第一主成分と第二主成分の主成分得点、xからそれぞれの行に対応する種名を抜き出してデータフレームにまとめています。ここで、左辺のPC1、PC2、Speciesは任意です。[]内の数字を3や4にすることで、第三主成分、第四主成分を抜き出すこともできます。

df.pca <- data.frame(PC1=pca$x[,1], PC2=pca$x[,2], Species=x$Species)


グループ分け

グループ分けにはdplyrライブラリを使います。なければインストールしてください。

library(dplyr)
hull <- df.pca %>%
+ dplyr::group_by(Species) %>%
+ dplyr::do(.[chull(.[c('PC1','PC2')]),])

少々ややこしいですが、打ち間違えないよう注意してください。


プロット

プロットにはggplot2を用います。まずデフォルトでプロットしてみましょう。一度プロットを変数pへ代入してから表示します。

library(ggplot2)
p <- ggplot(df.pca, aes(x = PC1, y = PC2, shape = Species)) + geom_point()
p

これで以下のような図が表示されると思います(図2)。

図2

ggplot2の良いところはこの変数pに書き加えていくことで図を編集することができることです。もっと表示をシンプルにしてみましょう(図3)。

p + theme_test()
図3

次にプロットのシンボルを変更します(図4)。

p + theme_test() + scale_shape_manual(values=c(1,2,3))

図4

このような感じで図を編集することが可能です。一度ここまでの編集内容を変数p2へ保存しておきます。

p2 <- p + theme_test() + scale_shape_manual(values=c(1,2,3))

その他、編集方法についての詳細はggplot2のドキュメントを参照してください。


各グループを枠線で囲う

それではこれまで作った図に枠線を追加します。グループ分けのところで作成した変数hullを利用します(図5)。なお、alphaは枠内の塗りつぶしの透過度で0が透明です。colorは枠線の色を示します。1は黒です。

p2 + geom_polygon(data=hull, alpha=0, color=1)


図5

最後に、全ての枠線が実線というのもアレなので、グループごとに線の種類を変えましょう(図6)。

p2 + geom_polygon(data=hull, alpha=0, color=1, aes(linetype=Species))

図6

以上です。

0 件のコメント:

コメントを投稿

MaxEnt解析手順メモ

前回までの記事 で琵琶湖南湖の湖沼図から地形に関するラスターデータを作成しました。今回はこれを利用してMaxEnt解析を試みます。MaxEntはオープンソースのソフトで ここ からダウンロードできます。なお、ここではバージョン3.4.4を使用しています。サンプルとして、ブルーギル...