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


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

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

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

また、本パッケージは他にも便利なコマンドが収録されていますのでパッケージヘルプを参考にしてください。

パッケージバージョンは0.1.0。windows 7およびOS X 10.11.6のR version 3.3.1で確認しています。

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

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

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

#development versionはこちらから
if (!require(devtools)) {
    install.packages('devtools')
}
devtools::install_github('thomasp85/ggforce')

実行コマンドの紹介

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

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

###データ例の作成#####
TestData <- data.frame(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


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク