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")) #&#34892;&#12398;&#33394;
RowColor <- colorRampPalette(c("#ec6d51", "#3f312b", "#674196", "#82ae46")) #&#21015;&#12398;&#33394;

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 #&#12487;&#12540;&#12479;&#12398;&#30906;&#35469;
chordDiagram(mat,
             transparency = 0.5, #&#36879;&#26126;&#24230;&#12398;&#35519;&#25972;
             #column.col = ColColor(ncol(mat)), #&#34892;&#12398;&#33394;&#12434;&#35373;&#23450;&#12289;&#12487;&#12540;&#12479;&#34892;&#12391;&#33394;&#25968;&#12434;&#25351;&#23450;
             row.col = RowColor(nrow(mat)), #&#21015;&#12398;&#33394;&#12434;&#35373;&#23450;&#12289;&#12487;&#12540;&#12479;&#21015;&#12391;&#33394;&#25968;&#12434;&#25351;&#23450;
             grid.col = c(RowColor(nrow(mat)), rep("grey", ncol(mat))) #&#12521;&#12505;&#12523;&#12398;&#33394;&#12434;&#35373;&#23450;&#12289;
             #&#12487;&#12540;&#12479;&#34892;&#12391;&#33394;&#12434;&#25351;&#23450;&#12375;&#12383;&#22580;&#21512;&#12399;c(RowColor(ncol(mat)), rep("grey", nrow(mat)))
)

行と列で項目が同じ場合

#&#33394;&#12398;&#28310;&#20633;
ColColor <- colorRampPalette(c("#2ca9e1", "#e7609e", "#f7c114", "#543f32")) #&#34892;&#12398;&#33394;
RowColor <- colorRampPalette(c("#ec6d51", "#3f312b", "#674196", "#82ae46")) #&#21015;&#12398;&#33394;

set.seed(123)
mat = matrix(sample(100, 25), 5)
rownames(mat) = letters[1:5]
colnames(mat) = letters[1:5]
#diag(mat) <- 0 #&#23550;&#35282;&#35201;&#32032;&#12434;0&#12395;&#32622;&#25563;&#12289;&#33258;&#24049;&#24490;&#29872;&#12364;&#37034;&#39764;&#12394;&#22580;&#21512;&#12399;&#20351;&#29992;&#12375;&#12390;&#12415;&#12390;&#12367;&#12384;&#12373;&#12356;&#12290;
mat #&#12487;&#12540;&#12479;&#12398;&#30906;&#35469;
chordDiagram(mat,
             directional = TRUE, #&#25351;&#21521;&#24615;&#12434;&#35299;&#12426;&#12420;&#12377;&#12367;&#34920;&#29694;
             transparency = 0.5, #&#36879;&#26126;&#24230;&#12398;&#35519;&#25972;
             row.col = RowColor(nrow(mat)), #&#21015;&#12398;&#33394;&#12434;&#35373;&#23450;&#12289;&#12487;&#12540;&#12479;&#21015;&#12391;&#33394;&#25968;&#12434;&#25351;&#23450;
             grid.col = RowColor(nrow(mat)) #&#12521;&#12505;&#12523;&#12398;&#33394;&#12434;&#35373;&#23450;&#12289;
)

出力される図

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

行と列で項目が同じ場合


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

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