Выделите c дней в ggplot - PullRequest
       0

Выделите c дней в ggplot

1 голос
/ 25 января 2020

Я хочу выделить несколько дней в моем временном ряду ggplot. Но я не знаю, как выделить все.

У меня есть этот код:

library(ggplot2)
library(dplyr)

highlight_max <- canteen_menu_data %>%  
filter(date == c("2016-10-04","2017-09-27"))

highlight_min <- canteen_menu_data %>% 
filter(date == c("2016-12-27","2017-07-28"))

highlight_christmas2016 <- canteen_menu_data %>% 
filter(date == c("2016-12-21","2016-12-30"))

highlight_christmas2017 <- canteen_menu_data %>% 
filter(date == c("2017-12-18","2017-12-21"))

dput(canteen_menu_data) %>% 
  ggplot(aes(x=date,y=sales)) + 
  geom_line(alpha=0.3) +
  geom_point(data=highlight_max, aes(x=date,y=sales), color='red',size=3) +
  geom_point(data=highlight_min, aes(x=date,y=sales), color='red',size=3) +
  geom_point(data=highlight_christmas2016, aes(x=date,y=sales), color='darkred',size=1) +  
  geom_point(data=highlight_christmas2017, aes(x=date,y=sales), color='darkred',size=1)

Когда я запускаю это, все точки подсвечиваются на моем графике, но последняя строка ничего не делает, как вы можете видеть на картинке

Ежедневные продажи

Можете ли вы мне помочь?

1 Ответ

1 голос
/ 25 января 2020

Я думаю, что вы допустили ошибку в фильтрации, если у вас есть два или более условий, вы должны использовать% в% или указать "|", например,

highlight_max <- canteen_menu_data %>%  
filter(date == c("2016-10-04","2017-09-27"))

Должно быть:

filter(date %in% c("2016-10-04","2017-09-27"))

или:

filter(date == "2016-10-04"| date == "2017-09-27")

Также я не уверен, является ли ваш столбец date character или Date. Пожалуйста, проверьте, используя str(canteen_menu_date). Мы можем смоделировать некоторые данные ниже, и я установил столбец даты так, чтобы можно было воспроизводить правильные точки:

set.seed(999)
canteen_menu_data = data.frame(
date = seq(as.Date("2016-10-01"),as.Date("2017-12-31"),by="day"),
sales = runif(457,min=100,max=400)
)

highlight_max <- canteen_menu_data %>%  
filter(date %in% as.Date(c("2016-10-04","2017-09-27")))

highlight_min <- canteen_menu_data %>% 
filter(date %in% as.Date(c("2016-12-27","2017-07-28")))

highlight_christmas2016 <- canteen_menu_data %>% 
filter(date %in% as.Date(c("2016-12-21","2016-12-30")))

highlight_christmas2017 <- canteen_menu_data %>% 
filter(date %in% as.Date(c("2017-12-18","2017-12-21")))

canteen_menu_data %>% 
  ggplot(aes(x=date,y=sales)) + 
  geom_line(alpha=0.3) +
  geom_point(data=highlight_max, aes(x=date,y=sales), color='red',size=3) +
  geom_point(data=highlight_min, aes(x=date,y=sales), color='red',size=3) +
  geom_point(data=highlight_christmas2016, aes(x=date,y=sales), color='darkred',size=1) +  
  geom_point(data=highlight_christmas2017, aes(x=date,y=sales), color='darkred',size=1)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...