I'm trying to add an annotation to the horizontal line on Y-axis. After reviewing similar questions, I created something similar, but not exactly what I want. Specifically, I want the text "High" to be placed on Y-axis (outside of the plot) below 6 (on the Y-axis). Here's what I've tried so far.
set.seed(57)
discharge <- data.frame(date = seq(as.Date("2011-01-01"), as.Date("2011-12-31"), by="days"),
discharge = rexp(365))
ggplot(discharge) +
geom_line(aes(x = date, y = discharge)) +
geom_hline(yintercept = 5.5, linetype= "dashed", color = "red") +
geom_text(aes(x = date[13], y = 5.5, label = "High"))
Any suggestions would be appreciated!
Set the breaks and labels accordingly. Try this:
library(ggplot2)
set.seed(57)
discharge <- data.frame(date = seq(as.Date("2011-01-01"), as.Date("2011-12-31"), by="days"),
discharge = rexp(365))
ggplot(discharge) +
geom_line(aes(x = date, y = discharge)) +
geom_hline(yintercept = 5.5, linetype= "dashed", color = "red") +
scale_y_continuous(breaks = c(0, 2, 4, 5.5, 6),
labels = c(0, 2, 4, "High", 6))
Created on 2020-03-08 by the reprex package (v0.3.0)
Here is an attempt at what you want that uses annotate
(instead of geom_text
) along with coord_cartesian
with clip = "off"
, similar to the answer provided by Maurits Evers here: Add text outside plot area. Notice the xlim
must be set for this to work and that the x-axis coordinate is set manually by subtracting from the date input.
ggplot(discharge) +
geom_line(aes(x = date, y = discharge)) +
geom_hline(yintercept = 5.5, linetype= "dashed", color = "red") +
annotate("text", x = discharge$date[13]-30, y = 5.5, label = "High")+
coord_cartesian(xlim = c(discharge$date[13], max(discharge$date)), clip = 'off')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With