グラフの保存方法
R言語のグラフィック作成パッケージ。dplyrと並んでtidyvereパッケージ群の中核をなす。 http://ggplot2.org/
学術論文向けにはcowplotパッケージを用いてカスタマイズすると良さそう。
ggplot2のチートシート http://docs.ggplot2.org/current/
ggplot2の本 by Hadley Wickham http://ggplot2.org/book/ →springerでePubとPDF購入済
ggplot2: きれいなグラフを簡単に合理的に - Heavy Watal
ggplot2を使って、軸を制御する-2 - Mukku John Blog
ggplot2に渡すデータはtidy dataにしておく必要がある。
日本語フォントの設定
あらかじめふぉん
ggplot2でグラフを作成した際に、外れ値の影響で本質部分が見づらくなった時用の調整方法。
How to set limits for axes in ggplot2 R plots? - Stack Overflow にあるように2つの方法がある。ほとんどの場合は問題ないと思われるが、範囲外のデータを削るか、表示範囲を変更しているだけかという違いがある。
範囲外のデータを削る方法(非推奨)
scale_x_continuous(limits = c(-5000, 5000))
表示範囲の制限のみを行う方法(推奨)
coord_cartesian(xlim = c(-5000, 5000))
こちらについては簡単には以下のように書くことができる。「coord_cartesian」関数が裏にあることは認識しておくこと。
+ xlim(-5000, 5000)
knitr::include_graphics("img/ggplot2-zooming.png")
縦軸と横軸を入れ替えるために「coord_flip()
」を用いている場合は「coor_cartesian()
」と同時に用いることができないが、
+ coord_flip(ylim = c(3,5), xlim = c(100, 400))
のように書いてやればデータを失わずに軸の入れ替えと表示範囲の調節を行うことができる。
軸の目盛範囲制御はggplot2での軸範囲制御へ。
ggplot2を使って、軸を制御する-3 - Mukku John Blog ggplot2 axis ticks : A guide to customize tick marks and labels - Easy Guides - Wiki - STHDA
ggplot2のx軸やラベル、目盛など多くの要素をコントロールできる。同じようなグラフをgridExtraなどを用いて並べる際に、同じx軸がダブらないようにするときなどに用いることができる。
「opts
」とかは古いので使わない。以下を適宜コメントアウトして使用する。
+ theme(axis.line.x = element_blank(),
axis.line.y = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks.x = element_blank(),
axis.ticks.y = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
legend.position = "none",
panel.background = element_blank(),
panel.border = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.background = element_blank()
)
ggplot2 axis ticks : A guide to customize tick marks and labels - Easy Guides - Wiki - STHDA
+ geom_hline(yintercept = 5,linetype = "dashed", colour = "blue")
+ geom_vline(xintercept = 2, colour = "red")
+ geom_abline(intercept = 6, slope = -0.6)
+ annotate("text", label = "plots", x = 5, y = 2, fontface = "italic")
+ annotate("text", label = "y == -0.6 * x + 6", x = 5, y = 4, parse = TRUE)
gridExtraでやるのはお手軽だが、幅を揃えたりの細かいことは苦手。結局cowplot
最強な感じだったような。
theme()
で余白も調節するr - Arrange ggplot plots (grobs with same widths) using gtable to create 2x2 layout - Stack Overflow RPubs - ggplot2を並べる ggplot2、grid、gtable、gridExtraの関係とか - Technically, technophobic.
ggplot2 3.0.0を使ってみた - Technically, technophobic.
ggpubr::ggboxplot
でadd =
"``jitter``"
が元グラフのグループ分けに従わない右の図のようにしたいのに左の図のようになってしまう。
knitr::include_graphics(path = "img/ggplot2-3.0.0-jitter.png")
最終的にはggpubr
で対応してくれる気もするが、当面の対応としてはggpubr::ggboxplot
が実際に呼び出していると思しきggplot2::geom_point
とposition = position_jitterdodge()
を使用する。
# ggpubr::ggboxplot jitter @ggplot2 v3.0.0 --------------------------------
library(ggplot2)
library(ggpubr)
# Load data
data("ToothGrowth")
df <- ToothGrowth
# results of add = "jitter" -----------------------------------------------
ggpubr::ggboxplot(df, "dose", "len", color = "supp",
add = "jitter",
palette = c("#00AFBB", "#E7B800"))
# expected results @ggplot v2.2.1 and tempolary code ----------------------
ggpubr::ggboxplot(df, "dose", "len", color = "supp",
palette = c("#00AFBB", "#E7B800")) +
geom_point(aes(fill = supp, color = supp), position = position_jitterdodge())
まあggpubr
は超絶に楽なのだが、こういうきちんとしたggplot2
文法も学ぶ必要があるということか。