はじめに
ggplot2を使って以下のようなレポーティング用のグラフを作成している時、
次のようなリクエストがありました。
「グラフのグループAの線だけ太くすることできない?」
ggplot2ならできるだろうと思ってトライしましたが、調べるのに案外時間がかかったのでメモしておきます。
環境
> R.version.string
[1] "R version 3.5.1 (2018-07-02)"
> packageVersion("ggplot2")
[1] ‘3.1.0’
準備
パッケージの読み込みとデータの準備を行います。
まだインストールされていない場合はinstall.packages("hoge")
でインストールをお願いします。
# パッケージの読み込み
library(tidyr)
library(dplyr)
library(magrittr)
library(ggplot2)
# seeedの設定
set.seed(1234)
# データの準備
df <- data.frame(
item1 = floor(runif(9, min = -3, max = 3 + 1)),
item2 = floor(runif(9, min = -3, max = 3 + 1)),
item3 = floor(runif(9, min = -3, max = 3 + 1)),
category = rep(LETTERS[1:3], 3)
)
グラフの作成
カテゴリ毎の平均の折れ線グラフ
とりあえず準備したデータから冒頭のグラフを作成してみます。
今回はカテゴリ毎の平均を折れ線グラフで描画します。
df %>%
gather(key, value, -category) %>%
group_by(category, key) %>%
summarise_all(mean) %>%
ggplot(aes(key, value, group = category, colour = category)) +
geom_line() +
geom_point()
特定の線のみを太くした折れ線グラフ
scale_size_manual()
を利用することで細かく線の太さを調整することができます。
ただし、aestheticsにsizeを追加しないと動作しません。
df %>%
gather(key, value, -category) %>%
group_by(category, key) %>%
summarise_all(mean) %>%
ggplot(aes(key, value, group = category, colour = category, size = category)) +
geom_line() +
geom_point() +
scale_size_manual(values = c(2, 1, 1))
できました!
enjoy!