Rで解析:ggplot2の体裁を整える!「cowplot」パッケージ


ggplot2の複雑な装飾が簡単に適応できるパッケージの紹介です。ウォーターマークや軸表示位置、異なるデータのグラフを重ね書き、高さや横幅が異なるグラフを同じサイズで並べてプロットすることが可能です。

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

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

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

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

実行コマンドの紹介

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

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

###データ例の作成#####
SampleData <- data.frame(Name = rep(paste0("Test", 1:10), each = 100),
                         Data1 = sample(1000:2000, 1000, replace = TRUE),
                         Data2 = sample(1000:2000, 1000, replace = TRUE),
                         ColData = rep(c("#d9bb9c", "#807765", "#4b61ba", "#90736a", "#ffdd99",
                                         "#deb7a0", "#28231e", "#a87963", "#ffdd99", "#756c6d"), each = 100))
#baseとなるプロットを作成
PointPlot <- ggplot(SampleData, aes(x = Data1, y = Data2, colour = ColData)) +
             geom_point(size = 4) + labs(title = "TEST PointPlot")
HistPlot <- ggplot(SampleData, aes(x = Data2, colour = ColData)) +
            geom_histogram() + labs(title = "TEST HistPlot") +
            theme(axis.text.x = element_text(angle=70, vjust=0.5))
########

#補助線を追加:background_gridコマンド
#background_grid(主補助線:major = "xy" or "x" or "y" or "only_minor" or "none",
#                副補助線:minor = "xy" or "x" or "y" or "none")
ggplot(SampleData, aes(x = Data1, y = Data2, colour = ColData)) +
geom_point(size = 4) + labs(title = "TEST") +
background_grid(major = "xy", minor = "x", size.major = 2, size.minor = 3,
                colour.major = "#ffdd99", colour.minor = "#62513d")

#異なるデータのプロットを重ね書き:ggdrawコマンド
#baseとなるプロットをggdrowコマンドで指定します
###重ね書きのデータを準備#####
boxes <- data.frame(
  x = sample((0:15)/20, 40, replace = TRUE),
  y = sample((0:20)/20, 40, replace = TRUE)
)
########
#重ね書き
ggdraw(PointPlot) + 
geom_rect(data = boxes, aes(xmin = x, xmax = x + .15,
                            ymin = y, ymax = y + .15),
          colour = "gray60", fill = "#ffdd99")

####################################################
###ggdrawコマンドと組み合わせて利用するコマンド#####
####################################################
#グラフラベルの追加:draw_plot_labelコマンド
ggdraw(PointPlot) +
draw_plot_label("A", x = 0, y = 1, hjust = -0.5, vjust = 1.5,
                size = 30, fontface = "bold", col = "#4b61ba")

#グラフ領域にテキストを追加:draw.textコマンド
ggdraw(PointPlot) +
draw_text("karadani", x = 0.4, y = 0.8, size = 90, alpha = 0.5, col = "blue") +
draw_text("Emono", angle = 30, size = 200, alpha = 0.7, col = "#a87963")

#プロット領域に自由にグラフを配置:draw_plotコマンド
ggdraw() +
draw_plot(PointPlot, x = -0.05, y = 0.7, width = 1, height = 0.55) +
draw_plot(HistPlot, x = 0.3, y = 0.01, width = 0.5, height = 0.55) +
draw_plot(PointPlot, x = -0.05, y = -0.01, width = 0.5, height = 0.25) +
draw_plot(HistPlot, x = 0.5, y = 0.5, width = 0.5, height = 0.3) 
########

#グラフ軸の描写位置を指定:switch_axis_positionコマンド
#y軸を右に設定する
#axisとkeepオプションを使用します
ggdraw(switch_axis_position(PointPlot + theme_bw(), axis = "y", keep = "none"))
#x,y軸を左右上下に設定する
#axisとkeepオプションを使用します
ggdraw(switch_axis_position(PointPlot + theme_bw(), axis = "xy", keep = "xy")) 
####################

#プロットを並べて表示:plot_gridコマンド
#例1 横にプロット:alignを適用しない
plot_grid(PointPlot, HistPlot, labels = c(1:2))
#例1 グラフサイズを揃えて横にプロット:alignを適用
plot_grid(PointPlot, HistPlot, labels = c(1:2), align = "h")
#例1 alignを適用しグラフの横幅を指定し全体のスケールを設定
#横幅を倍率で指定:rel_widths = c(数値, 数値)
#スケールを倍率で指定:scaleオプション
plot_grid(PointPlot, HistPlot, labels = c(1:2), align = "h", rel_widths = c(1, 1.5), scale = 0.95)

#例2 縦にプロット:alignを適用しない
plot_grid(PointPlot, HistPlot, labels = c(1:2), ncol = 1)
#例2 グラフサイズを揃えて縦にプロット:alignを適用
plot_grid(PointPlot, HistPlot, labels = c(1:2), ncol = 1, align = "v")

図の出力例

・background_gridコマンド
background_grid

・ggdrawコマンド
ggdraw

・draw_plot_labelコマンド
draw_plot_label

・draw.textコマンド
draw.text

・draw_plotコマンド
draw_plot

・switch_axis_positionコマンド
plot_grid


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

スポンサードリンク

おすすめコンテンツ


スポンサードリンク