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コマンド
少しでも、あなたの解析が楽になりますように!!