本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

Rで解析:ggplot2の表現が高まります「ggforce」パッケージ

ggplot2にはデータを分割プロットする「facet_wrap」や「facet_grid」コマンドが収録されています。これらコマンドは非常に便利ですが、分割前のプロットは別途コマンド実行が必要です。本パッケージには分割前と指定したグループを拡大表示してくれる「facet_zoom」コマンドが収録されています。「facet_wrap」や「facet_grid」コマンドと使用目的が異なりますが便利なので紹介します。

なお、「facet_zoom」コマンドの例は散布図ですが箱ひげ図や折れ線グラフなども適応可能です。

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

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

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

#パッケージのインストール
install.packages("ggforce")
スポンサーリンク

実行コマンドの紹介

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

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

###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
TestData <- tibble(Group = c(rep("Group1", 200), rep("Group2", 200),
                             rep("Group3", 500)),
                   Data1 = c(rnorm(200, 1, 1.5), rnorm(30, 5, 2),
                             rnorm(170, 7, 5), rnorm(250, 8, 2),
                             rnorm(250, 15, .8)),
                   Data2 = c(rnorm(200, 1, 1.5), rnorm(30, 5, 2),
                             rnorm(170, 7, 5), rnorm(250, 8, 2),
                             rnorm(250, 15, .8)))
########

#指定したグループを拡大表示:facet_zoomコマンド
#煩雑になるのでベースとなる散布図を準備
#例では散布図ですがboxplot,lineplotなどでも適応可能です
BasePoint <- ggplot(TestData, aes(x = Data1, y = Data2, colour = Group)) +
  geom_point()
#y軸方向で拡大
BasePoint + facet_zoom(y = Group == "Group1")
#x軸方向で拡大
BasePoint + facet_zoom(x = Group == "Group1")
#xy軸方向で拡大
BasePoint + facet_zoom(xy = Group == "Group1")
#特定のグループを除外して拡大
#!の演算子を使用する
BasePoint + facet_zoom(x = Group != "Group1", y = Group == "Group1")

#violinplotのポイント型:geom_sinaコマンド
#violinplotとsinaplotを並べて表示
library("grid")
grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 2)))
#violinplot
print(ggplot(TestData, aes(x = Group, y = Data2)) +
        geom_violin(aes(fill = Group)) +
        ggtitle("Violin Plot"),
      vp = viewport(layout.pos.row = 1, layout.pos.col = 1))
#geom_sinaコマンド
#ポイントサイズの指定:sizeオプション
print(ggplot(TestData, aes(x = Group, y = Data2)) +
        geom_sina(aes(color = Group), size = 1) +
        ggtitle("Sina Plot"),
      vp = viewport(layout.pos.row = 1, layout.pos.col = 2))

出力例

・facet_zoomコマンド y軸方向で拡大

facet_zoomy

・facet_zoomコマンド x軸方向で拡大

facet_zoomx

・facet_zoomコマンド xy軸方向で拡大

facet_zoomxy

・facet_zoomコマンド 特定のグループを除外して拡大

facet_zoom

・facet_zoomコマンド 参考:BoxPlot

box-plot

・geom_sinaコマンド

geom_sina

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

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.