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
出力例
・基本の散布図

・axis0コマンド

・fill_by_columnコマンド

・ggalignコマンド

・ggdual_axisコマンド

・ggcolorsコマンド

・ggplot_colコマンド

・label_breaksコマンド

・qgridコマンド

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