Rで解析:グラフのHALF&HALF!「gghalves」パッケージ


投稿日: Rの解析に役に立つ記事

「ggplot2」パッケージで2種類のグラフを組み合わせた表現が可能なパッケージの紹介です。組み合わせ可能なグラフはPointPlot、ViolinPlot、DotPlot、BoxPlotdです。

実行コマンドでは各コマンドと組み合わせの例を紹介します。

パッケージバージョンは0.1.2。実行コマンドはwindows 11のR version 4.1.3で確認しています。

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

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

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

実行コマンド

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

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

###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
set.seed(1234)
n <- 100
TestData <- tibble(Group = sample(paste0("Group", 1:4), n,
                                  replace = TRUE),
                   ID = sample(LETTERS[1:5], n, replace = TRUE),
                   Y_Data = sample(c(51:100), n, replace = TRUE))

#ggplotの基本描写エリアを設定
BaseGG <- ggplot(TestData, aes(x = Group, y = Y_Data, label = ID))
########

#基準軸に対して指定領域にPointPlotを作成:geom_half_pointコマンド
#領域の指定:sideオプション;左:"l",右:"r"
#pointのバラツキを指定:range_scaleオプション;0でバラツキなし
BaseGG +
  geom_half_point(side = "r", range_scale = 0, aes(color = Group))

#基準軸に対して指定領域にグループ分けのPointPlotを作成:geom_half_point_panelコマンド
#領域の指定:sideオプション;左:"l",右:"r"
#pointのバラツキを指定:range_scaleオプション;0でバラツキなし
BaseGG +
  geom_half_point_panel(side = "l", range_scale = 0.75, aes(color = ID))

#基準軸に対して指定領域にViolinPlotを作成:geom_half_violinコマンド
#領域の指定:sideオプション;左:"l",右:"r"
BaseGG +
  geom_half_violin(side = "r", aes(fill = Group))

#基準軸に対して指定領域にDotPlotを作成:geom_half_dotplotコマンド
#集計法の指定:methodオプション:"dotdensity","histodot"
#領域の指定:stackdirオプション;左:"down",右:"up"
BaseGG +
  geom_half_dotplot(method = "dotdensity", stackdir = "down", aes(fill = Group))

#基準軸に対して指定領域にBoxPlotを作成:geom_half_boxplotコマンド
#領域の指定:sideオプション;左:"l",右:"r"
BaseGG +
  geom_half_boxplot(side = "r", aes(fill = Group))

###組み合わせ例#####
ggplot() +
  geom_half_boxplot(data = TestData %>% filter(Group == "Group1"),
                    aes(x = Group, y = Y_Data, fill = Group)) +
  geom_half_violin(data = TestData %>% filter(Group == "Group1"),
                   aes(x = Group, y = Y_Data, fill = Group), side = "r") +
  geom_half_boxplot(data = TestData %>% filter(Group == "Group2"),
                    aes(x = Group, y = Y_Data, fill = Group)) +
  geom_half_point_panel(data = TestData %>% filter(Group == "Group2"),
                        aes(x = Group, y = Y_Data, color = ID), side = "r") +
  geom_half_dotplot(data = TestData %>% filter(Group == "Group3"),
                    aes(x = Group, y = Y_Data, fill = Group),
                        method = "dotdensity", stackdir = "down") +
  geom_half_boxplot(data = TestData %>% filter(Group == "Group3"),
                    aes(x = Group, y = Y_Data, fill = Group), side = "r") +
  geom_half_point(data = TestData %>% filter(Group == "Group4"),
                  aes(x = Group, y = Y_Data, colour = Group),
                  side = "l", range_scale = 0.75, size = 2.5) +
  geom_half_violin(data = TestData %>% filter(Group == "Group4"),
                   aes(x = Group, y = Y_Data, fill = Group), side = "r") +
  scale_fill_manual(values = c("Group1" = "#4b61ba", "Group2" = "#e1e6ea",
                               "Group3" = "#756c6d", "Group4" = "#ad8a80")) +
  scale_color_manual(values = c("Group1" = "#4b61ba", "Group2" = "#e1e6ea",
                                "Group3" = "#756c6d", "Group4" = "#ad8a80",
                                "A" = "#4b61ba", "B" = "green",
                                "C" = "yellow", "D" = "#ad8a80", "E" = "red")) +
  theme(legend.position = "none",
        panel.border = element_rect(linetype = "solid", fill = NA),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank(),
        panel.background = element_rect(fill = NA))

出力例

・geom_half_pointコマンド

・geom_half_point_panelコマンド

・geom_half_violinコマンド

・geom_half_dotplotコマンド

・geom_half_boxplotコマンド

・組み合わせ例


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

スポンサードリンク

スポンサードリンク