見出し画像

【3-1】Rでグラフを作るために必要な考え方(ggplot2)

Rはグラフを作ることがとても得意です。

こちらのサイトではいろいろなグラフの紹介や使い分け、Rのコードが載っています。中にはExcelでは作成が難しいものもあり、Excelではできないとメリットもあります。特にggplot2パッケージは有名です。

今回はRでグラフを作るための基本の考え方を紹介します。


グラフを重ねる

グラフ作成に慣れていないExcelのグラフの作り方(ピボットグラフ・テーブル形式を使わない)は以下になることが多いです。

  1. 作りたいグラフを決める

  2. そのグラフのが作れるようにExcelのデータを作り直す。

  3. グラフを作成する

  4. 違うグラフにしようと思ったら2に戻る

時系列のグラフを作り直すにはデータをもう一度並べ直す必要がある
テーブル形式にすると1つの表でいろいろな用途のグラフが作成できる

Rも下の図のようなdata.frame()形式からグラフを作ります。

複数のグラフや設定を重ねていく

Rでは基本的にグラフを重ねるという手法を取ります。

ggplot(data) +     #土台
 geom_line(...) +  #線グラフ
 geom_point(...)   #散布図

書き方は+でグラフを重ねていき、下のコードがグラフが上に重なります。

表の作り方に特徴がある

RはExcelやPythonとは少し違う表の作り方をします。
ポイントはlongデータにすることです。

ggplotではaes()という関数でグラフにいろいろな指定をします。

#pacmanパッケージがあるかを確認。なければinstall.packagesパッケージをインストール
if (!require("pacman")) install.packages("pacman")

#今回使うパッケージ
pacman::p_load(tidyverse)

df <- 
  tibble(
    id = LETTERS[1:5],
    day0 = c(15,12, 7, 11, 8),
    day7 = c(17, 15, 9, 9, 13),
    day14 = c(20, 17, 8, 13, 12)
  ) |> 
  pivot_longer(-id, names_to = "day", values_to = "test") 

ggplot(df) + 
  aes(x = day, y = test, color = id) +      # ここに書くと全てにこの内容が反映される
  geom_point(aes(shape = id)) +             # geom_()のaes()はそのグラフだけ適応
  geom_line(aes(group = id, linetype = id))
  

上のコードではaes()で以下の設定をしています。

  • x = day (x軸はxを使ってください)

  • y = test (y軸はtestを使ってください)

  • color = id (id毎に色を変えてください)

  • shape = id (id毎に凡例の形を変えてください)

  • group = id (線グラフを書く時に同じid同士を線で繋いでください)

  • linetype = id (線の種類をid毎に変えてください)

そのためggplot()ではaes()で何を指定するかを理解することが必要です。

プログラムさえ作ってしまえば、違うデータでも同じグラフが作れる

Rの大きな特徴としてプログラムを作ってしまえば、データが変わっても同じグラフが作れます。

Excelだと元データが増えたらグラフのデータも修正が必要

Rなどプログラムを使うものはデータが増えたり修正されればデータを読み込み直しさえすれば後は何も変更の必要がないのは非常に魅力です。

macは日本語を使う場合文字化け対策が必要

macを使っている方は日本語を使っていると以下のようなお豆腐現象が現れます。

日本語が全て□になる

そのためmacの場合は英数字を使うか日本語フォントを指定します。
1行足すだけなのでほぼコピペです

まとめ

今回はggplot()の基本となる考え方について解説しました。
aes()でx軸やy軸をどうするか?色や形をどうするか?など設定したり、グラフのフォントやサイズの指定、グラフ自体の細かい設定も全て+でつなげて完成させます。

次回から代表的なグラフを紹介していきます。


この記事が気に入ったらサポートをしてみませんか?