Rで解析:ggplot2の利便性が向上「plotflow」パッケージ


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

ggplot2パッケージは図を作成するのに非常に強力なパッケージですが、コマンドが多く慣れないと装飾などの作業に時間がかかります。そんな問題を解決するパッケージの紹介です。

本パッケージではプロットの軸スケール、facet_wrapコマンド使用時に行方向でプロットを配置、2つのプロットを並べて表示、2軸でプロット、グラフ補助線の色調整などを簡単に設定することができます。

また、pdf出力やDropBoxに保存するコマンドも収録されています。

なお、実行コマンドで紹介していないコマンド利用時にGhostscriptのエラーが出る場合があります。その場合はリンク先よりGhostscriptをダウンロードしてインストールしてください。

・Ghostscript Downloads
 http://ghostscript.com/download/gsdnld.html

参考:手軽で綺麗なグラフが欲しいなら、ggplot2のまとめです。
https://www.karada-good.net/analyticsr/r-78/

パッケージバージョンは0.1.0。実行コマンドはwindows 7およびOS X 10.11.2のR version 3.2.2で確認しています。




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

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

#パッケージのインストール
install.packages("devtools")
devtools::install_github("trinker/plotflow")

実行コマンド

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

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

###データ例の作成#####
n <- 100 TestData <- data.frame(Group = sample(paste0("Group ", 1:5), n, replace = TRUE), Data1 = sample(0:26, n, replace = TRUE), Data2 = rnorm(n)) ######## ###ggplot2のグラフひな形##### TestGPlot <- ggplot(TestData, aes(x = Group, y = Data1, color = Group, group = Group)) ######## ###基本の散布図##### TestGPlot + geom_point() ######## #軸の表示最大値を設定:axis0コマンド #最大値の設定:maxオプション #値の性質を設定:continuous;連続変数,deiscrete:離散変数 #対称軸:axisオプション TestGPlot + geom_point() + axis0(max = 20, scale = "continuous", axis = "y") #facet_wrapコマンド使用時に行方向でプロットを配置:fill_by_columnコマンド #分割対象データを指定:factオプション #コマンドを適用しない場合 #TestGPlot + geom_point() + facet_wrap(~Group, ncol = 2) + coord_flip() ggplot(fill_by_column(TestData, fact = "Group"), aes(x = Group, y = Data1, color = Group)) + geom_point() + facet_wrap(~Group, ncol = 2) + coord_flip() #2つのプロットを並べて表示:ggalignコマンド #Data1とData2の散布図 PointPlot <- TestGPlot + geom_point(aes(x = Data1, y = Data2)) + labs(x = "Data1", y = "Data2") #Group毎のデータ範囲 LinePlot <- TestGPlot + geom_line() #表示 ggalign(plot1 = PointPlot, plot2 = LinePlot) #2軸でプロット:ggdual_axisコマンド #データの作成 TestData2 <- as.data.frame(tapply(TestData$Group, TestData$Group, length)) TwoGGPlot <- ggplot(TestData2, aes(x = row.names(TestData2), y = TestData2[, 1])) #棒グラフ LinePlot <- TwoGGPlot + geom_bar(stat = "identity", fill = "#a87963") + theme_bw() + theme(plot.margin = grid::unit(c(.5, 1, .5, 0), "cm")) + labs(x = "Group", y = "Data") #折れ線グラフ LinePlot2 <- TwoGGPlot + geom_line(group = 1, color = "#4b61ba", size = 2) + theme_bw() + theme(plot.margin = grid::unit(c(.5, 1, .5, 0), "cm")) + ylim(0, 30) + labs(x = "Group", y = "Data2") #プロット ggdual_axis(lhs = LinePlot, rhs = LinePlot2) #ggplotの初期設定の色でグラデーションを取得:ggcolorsコマンド #グラデーション範囲:nオプション n <- 10 GGCols <- ggcolors(n) plot(1:n, pch = 17, col = GGCols) #シンボル,塗りの色を設定:ggplot_colコマンド #色の設定:colオプション ggplot_col(col = "purple", fill = TRUE, colour = TRUE) TwoGGPlot + geom_bar(stat = "identity") #空白でラベルを改行表示:label_breaksコマンド #対象行の指定:split.colオプション ggplot(label_breaks(TestData, split.col = 1), aes(x = Group, y = Data1)) + geom_point() #グリッド線の調整:qgridコマンド #一括調整:x,yオプション;NULLで非表示 TestGPlot + geom_point(aes(x = Data1, y = Data2)) + labs(x = "Data1", y = "Data2") + qgrid(#x = NULL, y = NULL, xmaj = "green", xmin = "blue", ymaj = "yellow", ymin = "red") #指定したデータの最大値+最大値*係数の値を算出:cushionコマンド #カテゴリデータの場合は最頻度数が最大値となります #データの指定:xオプション #係数の指定:padオプション #カテゴリデータの場合 #頻度の計算例 #tapply(TestData$Group, TestData$Group, length) #Group1 Group2 Group3 Group4 Group5 #  18 23 21 20 18 #cushionコマンド,結果は"23 + 23*pad"で46 cushion(TestData$Group, pad = 1) [1] 46 [/code]




出力例

・基本の散布図
basescatter

・axis0コマンド
axis0

・fill_by_columnコマンド
fill_by_column

・ggalignコマンド
ggalign

・ggdual_axisコマンド
ggdual_axis

・ggcolorsコマンド
ggcolors

・ggplot_colコマンド
ggplot_col

・label_breaksコマンド
label_breaks

・qgridコマンド
qgrid


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

スポンサードリンク

関連コンテンツ


スポンサードリンク