グラフを ggplot2 で作成して、基準値などの特定な値に線を引くときに geom_segment を使いました。
軸が数値の場合は良いのですが、日付のときに躓いて解消したときのメモです。
準備
ライブラリの読み込みと、サンプル用のデータを生成しておきます。
library(tidyverse)
set.seed(1234)
data <- data.frame(
date = seq(
as.Date("2021-01-01"),
length = 12,
by = "months"
),
y = rnorm(12, 20, 5)
)
日付の軸方向に線を引く
日付の軸に -Inf、Inf を直接指定すると
Error: Invalid input: date_trans works with objects of class Date only
となるので、次の様に structure で Date クラスにして使います。
ggplot(data = data) +
geom_line(
aes(
x = date,
y = y
)
) +
geom_segment(
aes(
x = structure(-Inf, class = "Date"),
xend = structure(Inf, class = "Date"),
y = 18, yend = 18
),
color = "red"
)
追記:geom_hline を使う
今回の様な用途なら、横線は geom_hline 、縦線は geom_vline の方が良さそうです。
以下のようにしても、同様のグラフになります。
ggplot(data = data) +
geom_line(
aes(
x = date,
y = y
)
) +
geom_hline(
aes(
yintercept = 18
),
color = "red"
)
コメント