Folix
Folix

Reputation: 13

How to overlay a box on an existing plot?

I am trying to draw a box on top of the plot on a specific x = Date and y = Price.

I have multiple Date entries stored in specificDates, but even though the code can be ran and doesn't output any errors, the box doesn't show on the plot.

dataDate <- as.Date(c("2015-01-01","2016-03-01","2018-06-01","2020-08-01"))
dataPrice <- c(170, 320, 7000,8000)
dummyData <- data.frame(dataDate, dataPrice)
specificDates <- as.Date(c("2016-07-15", "2020-05-20"))

plot_linPrice <- ggplot(data = dummyData,
                        mapping = aes(x = dataDate, y = dataPrice)) +
  geom_line() +
  scale_y_log10() +
  geom_vline(xintercept = as.numeric(specificDates), color = "blue", lwd = .5) #+  #uncommenting + brings up error
  geom_rect(aes(xmin = "2015-01-01", xmax = "2015-06-01", ymin = 5000, ymax = 8000), fill = "blue")

print(plot_linPrice)

Upvotes: 1

Views: 78

Answers (1)

Duck
Duck

Reputation: 39613

Try with this:

library(ggplot2)
#Data
dataDate <- as.Date(c("2015-01-01","2016-03-01","2018-06-01","2020-08-01"))
dataPrice <- c(170, 320, 7000,8000)
dummyData <- data.frame(dataDate, dataPrice)
specificDates <- as.Date(c("2016-07-15", "2020-05-20"))
#Code
ggplot(data = dummyData,
                        mapping = aes(x = dataDate, y = dataPrice)) +
  geom_line() +
  scale_y_log10() +
  geom_vline(xintercept = as.numeric(specificDates), color = "blue", lwd = .5)+
  geom_rect(aes(xmin = as.Date("2015-01-01"), xmax = as.Date("2015-06-01"), ymin = 5000, ymax = 8000), fill = "blue")

Output:

enter image description here

Upvotes: 1

Related Questions