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)) #ラベルの色を設定、 )
出力される図
行と列で項目が異なる場合
行と列で項目が同じ場合
少しでも、あなたの解析が楽になりますように!!