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

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

Rで解析:ggplot2の作業効率が向上!!「plotflow」パッケージ

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

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

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

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

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

パッケージバージョンは0.2.1。実行コマンドはwindows 11のR version 4.1.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)

#空白でラベルを改行表示: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

出力例

・基本の散布図

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

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

スポンサーリンク
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.