0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rtipsアタック25【解答編】Advent Calendar 2021

Day 3

A.複数の関数プロットを一枚の図にしたい

Last updated at Posted at 2021-12-02

出題編3日目の解答編です。

あくまでも@kosugittiはこうした,というだけで唯一の正解でもなければ最適なコードとは言えないかもですが。

myModel <- function(x, b0, b1) {
  b0 + b1 * x
}

plot.list <- list()
for (g in 1:NROW(dat_lm)) {
  plot.list[[g]] <- dat_lm[g, ] %>%
    unnest(data) %>%
    ggplot(aes(x = Sepal.Width, y = Petal.Length)) +
    geom_point(color = g) +
    stat_function(fun = myModel, args = list(b0 = dat_lm[g, ]$b0, b1 = dat_lm[g, ]$b1), color = g) +
    ggtitle(dat_lm[g, ]$Species)
}

g <- do.call(gridExtra::grid.arrange, plot.list)
plot(g)

まず自作関数を作りました。今回はただの直線ですが,ここは必要に応じて変更していただければと思います

で,図のggplotオブジェクトを格納するリストを作って,for文で毎行のデータから図を作る,という作業をしています。

最後にgridExtra::grid.arrangeを全部のリストに適用してプロット。これでできました。

このやり方だと,ggplot関数が自由にいじれるので結構便利かなと思っています。
for文を使うあたりが美しくない。purrr::mapとかのほうがいいのかも。でもこっちの方が私には直感的に分かりやすかったんですよねー。

こんな感じで,自分のTips,こんなバグをこうやって解決したよ,というような話を,よろしければ皆さんもお寄せください。
出題編はこちらです。
あるいは「こちらの解法のほうが美しいぞ」というのがありましたら,コメントいただけると幸いです。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?