2
4

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 5 years have passed since last update.

ggplot2のgeom_lineで特定の線だけ太くする

Last updated at Posted at 2019-03-20

はじめに

ggplot2を使って以下のようなレポーティング用のグラフを作成している時、

line_plot.png

次のようなリクエストがありました。

「グラフのグループ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()

line_plot.png

特定の線のみを太くした折れ線グラフ

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

できました!

bold_line_plot.png

enjoy!

2
4
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
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?