Rで解析:データの特徴を円で表現「packcircles」パッケージ


データの特徴を円で表現するパッケージの紹介です。色々な使い道があるのではと考えます。ggiraphパッケージとの組み合わせでインタラクティブなグラフが作成可能です。

パッケージバージョンは0.3.0。windows 10のR version 3.4.2で動作を確認しています。


パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("packcircles")



コマンドの紹介

詳細はコマンド、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("packcircles")

###データ例の作成#####
#install.packages("tidyverse")
library("tidyverse")
n <- 300 TestData1 <- data.frame(Value = 1:n, id = 1:n, Name = sample(LETTERS[1:24], n, replace = TRUE)) %>% mutate(Col = if_else(Value %% 2 == 0, "#9e323a", "#7edbf2")) TestData2 <- data.frame(Value = n:1, id = 1:n, Name = sample(LETTERS[1:24], n, replace = TRUE)) %>% mutate(Col = if_else(Value %% 2 == 0, "#df6d68", "#f6adad")) ######## #サークルの重なりを避けてレイアウトを作成:circleProgressiveLayoutコマンド #サークルサイズデータを指定:sizecolオプション #サイズの指定方法:sizetypeオプション;"area","radius"から選択 CPData <- circleProgressiveLayout(TestData1, sizecol = 1, sizetype = "area") ggplot(data = CPData, aes(x, y, size = radius)) + geom_point(col = "black", show.legend = FALSE) #反復ペアワイズを利用して重複しないレイアウトを作成:circleRepelLayoutコマンド #データがcentre x,centre y,radius順で無い場合 #xysizecolsオプションはc(NA, NA, 1)と設定する #反復回数を指定:maxiterオプション;大きいほど制度が良い CRData <- circleRepelLayout(TestData1, xysizecols = c(NA, NA, 1), sizetype = "area", maxiter = 1500) ggplot(data = CRData$layout, aes(x, y, size = radius)) + geom_point(col = "black", show.legend = FALSE) #レイアウトをggplot2で利用する形式へ変換:circleLayoutVerticesコマンド #geom_polygonコマンドでの利用が可能になります GGCPData <- circleLayoutVertices(CPData) ggplot(data = GGCPData, aes(x, y, group = id)) + geom_polygon(col = "red", fill = "blue", show.legend = FALSE) ###参考例:インタラクティブなグラフ##### #install.packages("ggiraph") library("ggiraph") #中心からデータサイズ_昇順 GetLayout1 <- circleProgressiveLayout(TestData1, sizecol = 1, sizetype = "radius") TestPlotData1 <- circleLayoutVertices(GetLayout1) %>% left_join(TestData1[, c(2, 3:4)], by = "id") #中心からデータサイズ_降順 GetLayout2 <- circleProgressiveLayout(TestData2, sizecol = 1, sizetype = "radius") TestPlotData2 <- circleLayoutVertices(GetLayout2) %>% left_join(TestData2[, c(2, 3:4)], by = "id") #facetを適応するためにデータを結合 PlotData <- rbind(cbind(TestPlotData1, set = 1), cbind(TestPlotData2, set = 2) ) #プロット準備 IntGg <- ggplot(data = PlotData, aes(x, y, group = id)) + geom_polygon_interactive(fill = PlotData$Col, col = "black", tooltip = PlotData$Name, show.legend = FALSE) + facet_wrap(~ set, labeller = as_labeller(c("1" = "中心からデータサイズ_昇順", "2" = "中心からデータサイズ_降順"))) + theme_void() + coord_equal() #プロット ggiraph(ggobj = IntGg, width_svg = 5, height_svg = 3, zoom_max = 10) [/code]




出力例

・circleProgressiveLayoutコマンド

・circleRepelLayoutコマンド

・circleLayoutVerticesコマンド

・参考例:インタラクティブなグラフ
 プロット内虫眼鏡のメニュー選択後、マウスのホイール操作で拡大が可能です。


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

スポンサードリンク

関連コンテンツ


スポンサードリンク