18
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

R言語Advent Calendar 2024

Day 2

tidyplotsを試す

Last updated at Posted at 2024-12-01

最近R界隈で話題なのがtidyplots

基本的にはggplot2のラッパーなのだけど、素のggplot2よりもシンプルで書きやすいという噂です。

学生さん向けの解説記事や、yutaniさんによるレビュー動画も出ています。


ここでは公式サイトのusageに載っている事例からいくつかをggplot2とtidyplotsとで書き比べてみたいと思います。
なお、デフォルト状態での表現を確認するため、両者を似せるための調整はしません。

まず必要なパッケージを読み込みます。

library(conflicted)
library(tidyverse)
library(tidyplots)

1つ目は平均の棒グラフにエラーバーとドットを載せた図です。

tidyplots
study %>% 
  tidyplot(x = treatment, y = score, color = treatment) %>% 
  add_mean_bar(alpha = 0.4) %>% 
  add_sem_errorbar() %>% 
  add_data_points_beeswarm()

image.png

ggplot2
study |>
  ggplot(aes(x = treatment, y = score, fill = treatment)) +
  stat_summary(geom = "bar", fun = "mean") +
  stat_summary(geom = "errorbar", fun.data = "mean_se", width = 0.5) +
  geom_dotplot(binaxis = "y", stackdir = "center", binwidth = 1)

image.png


2つ目は積み上げ棒グラフ

tidyplots
energy %>% 
  tidyplot(x = year, y = power, color = energy_source) %>% 
  add_barstack_absolute()

image.png

ggplot2
energy %>% 
  ggplot(aes(x = year, y = power, fill = energy_source )) +
  geom_col()

image.png


3つ目は積み上げ帯グラフ。

tidyplots
energy_week %>% 
  tidyplot(x = date, y = power, color = energy_source) %>% 
  add_areastack_absolute()

image.png

ggplot2
energy_week %>% 
  ggplot(aes(x = date, y = power, fill = energy_source)) +
  geom_area(color = "gray")

image.png


4つ目は割合を示した積み上げ棒グラフ。

tidyolots
energy_week %>% 
  tidyplot(x = date, y = power, color = energy_source) %>% 
  add_areastack_relative()

image.png

ggplots
energy_week %>% 
  ggplot(aes(x = date, y = power, fill = energy_source)) +
  geom_area(position = "fill", color = "gray")

image.png


5つ目は折れ線グラフ

tidyplots
time_course %>%
  tidyplot(x = day, y = score, color = treatment, dodge_width = 0) %>%
  add_mean_line() %>%
  add_mean_dot() %>%
  add_sem_ribbon()

image.png

ggplot2
time_course %>%
  ggplot(aes(x = day, y = score, color = treatment,fill = treatment, group = treatment)) +
  stat_summary(geom = "line", fun = "mean") +
  stat_summary(geom = "ribbon", fun.data = "mean_se", alpha = 0.5) +
  stat_summary(geom = "point", fun = "mean")

image.png


6つ目はヒートマップ。

tidyplots
climate %>%
  tidyplot(x = month, y = year, color = max_temperature) %>%
  add_heatmap()

image.png

ggplot2
climate |>
  ggplot(aes(x = month, y = year, fill = max_temperature)) + 
  geom_tile()

image.png


7つ目は箱ひげ図とp値。

tidyplots
study %>% 
  tidyplot(x = treatment, y = score, color = treatment) %>% 
  add_boxplot() %>% 
  add_test_pvalue(ref.group = 1)

image.png

ggplot2
library(ggsignif)
study %>% 
  ggplot(aes(x = treatment, y = score, fill =treatment)) +
  geom_boxplot() +
  geom_signif(comparisons = list(c("A", "B")), test = "t.test", map_signif_level = FALSE, y_position = 55) +
  geom_signif(comparisons = list(c("A", "C")), test = "t.test", map_signif_level = FALSE, y_position = 60) +
  geom_signif(comparisons = list(c("A", "D")), test = "t.test", map_signif_level = FALSE, y_position = 65) 

image.png


はい、どうでしょうかね。

tidyplotsの方が特別短く書けるわけじゃないようです。
しかし、コードを短くすることはtidyplotsの目的ではないんでしょう。
それよりも、生のデータから細かい調整なしに見やすく整ったグラフを出してくれるのは大きなメリットだと思いました。

カラーパレットが視覚多様性に配慮されているのも嬉しいところです。

tidyplotsはggplot2から置き換えられるようなものではないですが、用途によってはggplotsで試行錯誤するよりも、tidyplotsのデフォルトの方が効率的ということもあるかもしれません。

Enjoy!

18
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?