情報の整理 → 正しい解析・新しい発見
ある程度はテクニックであり教養。
デザインの基本的なルールを
知りさえすれば誰でも上達する。
高橋佑磨センパイに教えてもらおう。
平均値の差? ばらつきの様子? 軸はゼロから始まる?
いきなりggplot2から使い始めても大丈夫。
+
していくggplot()
このデータでよろしくgeom_*()
点や線をよろしくtheme_*()
軸とか背景の見た目をよろしくggplot(data = mpg)
# geom_point(mapping = aes(x = displ, y = cty))
# theme_classic(base_size = 20, base_family = "Helvetica")
+
していくggplot()
このデータでよろしくgeom_*()
点や線をよろしくtheme_*()
軸とか背景の見た目をよろしくggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = cty))
# theme_classic(base_size = 20, base_family = "Helvetica")
+
していくggplot()
このデータでよろしくgeom_*()
点や線をよろしくtheme_*()
軸とか背景の見た目をよろしくggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = cty)) +
theme_classic(base_size = 20, base_family = "Helvetica")
p0 = ggplot(mpg, aes(x = displ, y = cty))
p1 = p0 + geom_point()
p2 = p1 + theme_classic(base_size = 20, base_family = "Helvetica")
p3 = p2 + stat_smooth(method = lm, formula = y ~ log(x))
print(p3)
p0
とか p1
あとで使うよ
X軸やY軸になるものがそれぞれ縦1列。横1行が1データ点。
車の燃費に関する多変量データの例 mpg
:
print(mpg)
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2.0 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2.0 2008 4 auto(av) f 21 30 p compact
--
231 volkswagen passat 2.0 2008 4 manual(m6) f 21 29 p midsize
232 volkswagen passat 2.8 1999 6 auto(l5) f 16 26 p midsize
233 volkswagen passat 2.8 1999 6 manual(m5) f 18 26 p midsize
234 volkswagen passat 3.6 2008 6 auto(s6) f 17 26 p midsize
排気量displ
と燃費cty
以外の列も図に反映させたい…!
aes()
の中で列名を指定する。
p0 + geom_point(mapping = aes(x = displ, y = cty, size = cyl,
colour = class, shape = drv))
aes()
の外で列名を指定する。
p0 + geom_point(mapping = aes(x = displ, y = cty),
size = 6, colour = "darkorange", alpha = 0.4)
scale_colour_*()
個々の色を自分で決めず、既存のパレットを利用するのが吉。
e.g., ColorBrewer,
viridis
(色覚多様性の対策にも有効)
#pQ+ scale_colour_brewer(palette = "Spectral")
pQ + scale_colour_viridis_c(option = "magma", direction = -1)
p1 + facet_wrap(~ class, ncol = 4L)
ggplotの真骨頂! これが無かったら結構たいへん。
p1 + facet_grid(cyl ~ class)
scale_*
, coord_*
ggplot(data = diamonds, aes(carat, price)) +
geom_point(alpha = 0.25) +
scale_x_log10(limit = c(0.1, 10)) +
scale_y_log10(breaks = c(1, 5, 10) * 1000) +
coord_cartesian(ylim = c(800, 12000)) +
labs(title = "Diamonds", x = "Size (carat)", y = "Price (USD)")
theme
既存の theme_*()
をベースに、theme()
関数で微調整。
p1 + theme_bw() + theme(
panel.background = element_rect(fill = "khaki"), # 箱
panel.grid.major = element_line(colour = "red"), # 線
axis.title = element_text(size = 32), # 文字
axis.text = element_blank() # 消す
)
別のパッケージ (cowplot や patchwork) の助けを借りて
pAB = cowplot::plot_grid(p2, p2, labels = c("A", "B"), nrow = 1L)
cowplot::plot_grid(pAB, p2, labels = c("", "C"), ncol=1L)
width
やheight
が小さいほど、文字・点・線が相対的に大きく
# 7inch x 300dpi = 2100px四方 (デフォルト)
ggsave("mpg1.png", p1) # width = 7, height = 7, dpi = 300
# 4 x 300 = 1200 全体7/4倍ズーム
ggsave("mpg2.png", p1, width = 4, height = 4) # dpi = 300
# 2 x 600 = 1200 全体をさらに2倍ズーム
ggsave("mpg3.png", p1, width = 2, height = 2, dpi = 600)
# 4 x 300 = 1200 テーマを使って文字だけ拡大
ggsave("mpg4.png", p1 + theme_bw(base_size = 22), width = 4, height = 4)
geom_*()
が使える?なんでもある。 公式サイトを見に行こう。
p = ggplot(data) + geom_*() + scale_*() + theme_*()
ggsave("fig1.png", p, width=4, height=3, dpi=300)
grid
を習得するとグラフの中にグラフを入れたり、