Rとウェブ解析:Circular Visualization?関係を把握する珍しい表現方法です。

Rの解析に役に立つ記事

Circular Visualizationという表現方法をご存知でしょうか?遺伝子解析や社会学などで見かけるグラフで、項目を円に並べ線で結び関係性を把握する表現方法です。

そんなCircular Visualizationをお手軽に作成できる「circlizeパッケージ」をご紹介します。このパッケージはCIRCOSという団体がフリーで配布していて、natureやscienceだけでなく、New York Timesなどでも利用されています。

CIRCOS:http://circos.ca/

非常に有用なパッケージだと思います。ぜひ、ご利用ください。

スポンサーリンク
スポンサーリンク

「qicharts」パッケージの導入

下記コードを実行することで導入することができます。
URL: http://cran.r-project.org/web/packages/circlize/index.html

install.packages("circlize")

コマンド例の紹介

行と列で項目が異なる場合と同じ場合の例をご紹介します。実行してデータを確認してみてください。
また、個のパッケージはいろいろできますので試してみてください。

まずは、パッケージの読み込みです。色を設定する為にRColorBrewerも読み込んでいます。

library("circlize")
library("RColorBrewer")

行と列で項目が異なる場合

#色の準備
ColColor <- colorRampPalette(c("#2ca9e1", "#e7609e", "#f7c114", "#543f32")) #行の色
RowColor <- colorRampPalette(c("#ec6d51", "#3f312b", "#674196", "#82ae46")) #列の色

set.seed(123)
mat <- matrix(sample(1:100, 18, replace = TRUE), 3, 6)
rownames(mat) <- letters[1:3]
colnames(mat) <- LETTERS[1:6]
rn <- rownames(mat)
cn <- colnames(mat)
mat #データの確認
chordDiagram(mat,
             transparency = 0.5, #透明度の調整
             #column.col = ColColor(ncol(mat)), #行の色を設定、データ行で色数を指定
             row.col = RowColor(nrow(mat)), #列の色を設定、データ列で色数を指定
             grid.col = c(RowColor(nrow(mat)), rep("grey", ncol(mat))) #ラベルの色を設定、
             #データ行で色を指定した場合はc(RowColor(ncol(mat)), rep("grey", nrow(mat)))
)

行と列で項目が同じ場合

#色の準備
ColColor <- colorRampPalette(c("#2ca9e1", "#e7609e", "#f7c114", "#543f32")) #行の色
RowColor <- colorRampPalette(c("#ec6d51", "#3f312b", "#674196", "#82ae46")) #列の色

set.seed(123)
mat = matrix(sample(100, 25), 5)
rownames(mat) = letters[1:5]
colnames(mat) = letters[1:5]
#diag(mat) <- 0 #対角要素を0に置換、自己循環が邪魔な場合は使用してみてください。
mat #データの確認
chordDiagram(mat,
             directional = TRUE, #指向性を解りやすく表現
             transparency = 0.5, #透明度の調整
             row.col = RowColor(nrow(mat)), #列の色を設定、データ列で色数を指定
             grid.col = RowColor(nrow(mat)) #ラベルの色を設定、
)

出力される図

行と列で項目が異なる場合

行と列で項目が同じ場合


少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました