ggplot2の周囲にグラフの追加が簡単なパッケージの紹介です。非常に使い方が簡単です。追加可能なグラフのコマンドは
「geom_*freqpoly」、「geom_*sidebar」、「geom_*sideboxplot」、「geom_*sidedensity」、「geom_*sidehistogram」、「geom_*sideline」、「geom_*sidepoint」、「geom_*sidetile」、「geom_*sideviolin」
などです。なお、*には「xまたはy」が入ります。また、グラフを「facet_grid」コマンドで分割すると各周辺のグラフも分割されてしまいます。しかし、本パッケージに収録されている「ggside」コマンドを利用するとグラフの分割を調整することが可能です。大変便利な機能だと思います。
パッケージバージョンは0.2.1。実行コマンドはwindows 11のR version 4.2.1で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール install.packages("ggside")
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み library("ggside") ###データ例の作成##### #tidyverseパッケージがなければインストール if(!require("tidyverse", quietly = TRUE)){ install.packages("tidyverse");require("tidyverse") } set.seed(1234) n <- 100 TestData <- tibble(Group = sample(paste0("Group", 1:5), n, replace = TRUE), Char_Data = sample(LETTERS, n, replace = TRUE), X_Data = sample(c(1:50), n, replace = TRUE), Y_Data = sample(c(51:100), n, replace = TRUE)) %>% arrange(Group, Char_Data) ######## ###HeatMapにデータを追加する##### #データの準備 HeatData <- TestData %>% group_by(Group, Char_Data) %>% summarise(X_Data_Mean = mean(X_Data), .groups = "drop") %>% group_by(Char_Data) %>% mutate(Char_Mean = mean(X_Data_Mean), .keep = "all") %>% #基本プロットの作成:ggplot2::geom_tileコマンド ggplot(HeatData, aes(x = Group, y = Char_Data)) + geom_tile(aes(fill = X_Data_Mean)) + scale_fill_viridis_b() -> HeatPlot #確認 HeatPlot ###HeatPlotオブジェクトにグラフを追加### HeatPlot + #x軸側上部にBoxPlotを追加:geom_xsideboxplotコマンド #塗色:xfillオプション;fillではない geom_xsideboxplot(aes(x = Group, y = X_Data_Mean, xfill = Group), show.legend = FALSE) + #BoxPlotのy軸を調整:scale_xsidey_continuousコマンド scale_xsidey_continuous(minor_breaks = NULL, limits = c(0,NA)) + #y軸側右側にHeatMapを追加:geom_ysidetileコマンド #塗色:yfillオプション;fillではない geom_ysidetile(aes(x = "mean", yfill = Char_Mean)) + #y軸側のHeatMapの色を設定:scale_yfill_gradientコマンド #その他色の設定コマンドは?"scale_xcolour"で確認してください scale_yfill_gradient(low ="#FFFFFF", high = "#0000FF") + #テーマで体裁を調整 #その他体裁コマンドは?"ggside-theme"で確認してください theme( #パネルサイズを調整:ggside.panel.scaleコマンド #例ではx軸のBoxPlot #末尾の".x"を取り除くと両軸,".y"でy軸HeatMapサイズ ggside.panel.scale.x = 0.3, #各パネル枠線色:ggside.panel.borderコマンド ggside.panel.border = element_rect(fill = NA, colour = "red", size = 1), #各パネルのメモリ線:ggside.panel.gridコマンド;その他に #ggside.panel.grid.major,ggside.panel.grid.minor, #ggside.panel.grid.major.x,ggside.panel.grid.major.y, #ggside.panel.grid.minor.x, ggside.panel.grid.minor.y ggside.panel.grid = element_line(colour = "black", size = .1, linetype = "dotted"), #各パネル背景色:ggside.panel.backgroundコマンド ggside.panel.background = element_blank(), #以下ggplot2の基本コマンド panel.background = element_rect(fill = "grey20"), panel.grid.major = element_line(colour = NA) ) ######## ###PointPlotに密度分布とBoxPlotを追加##### ggplot(TestData, aes(X_Data, Y_Data, fill = Group)) + geom_point(aes(color = Group)) + geom_xsidedensity(alpha = 0.5, position = "stack") + geom_ysideboxplot(aes(x = Group), orientation = "x") + scale_ysidex_discrete(guide = guide_axis(angle = 30)) + theme(ggside.panel.scale = 0.5, ggside.panel.border = element_rect(fill = NA, colour = "red", size = 0.5, linetype = "dotted"), ggside.panel.background = element_blank()) -> PointTest #確認 PointTest ###上記グラフを「facet_grid」コマンドを適応し「ggside」コマンドでx側のグラフを集約##### PointTest + facet_grid(.~Group) + #各パネルの位置,集約などを設定:ggsideコマンド #各パネルの集約:collapseオプション #"all"でx,y軸 ggside(collapse = "y")
出力例
・HeatPlotオブジェクトにグラフを追加
・PointPlotに密度分布とBoxPlotを追加
・上記グラフを「facet_grid」コマンドを適応し「ggside」コマンドでx側のグラフを集約
少しでも、あなたの解析が楽になりますように!!