ggplot - порядок строк, одна строка поверх другой - PullRequest
0 голосов
/ 24 марта 2020

Вот мой пример:

library(ggplot2)

forecast <- c(2,2,1,2,2,3,2,3,3,3,3)
actual <- c(2,2,1,2,2,3,2,3,2,2,1)

my_df <- data.frame(forecast = forecast, actual = actual)
my_df$seq_order <- as.factor(1:NROW(my_df))
my_df <-gather(my_df, "line_type", "value", -seq_order)


ggplot(data=my_df, aes(x=seq_order, y = value,
  colour = line_type, group=line_type))+geom_line()+theme(legend.position="bottom")

Вот как это выглядит: plot

Я бы хотел, чтобы красная линия была сверху синяя линия везде, где они совпадают. Я пытался scale_color_manual(values = c("forecast" = "red" ,"actual" = "blue")), но это не сработало.

1 Ответ

1 голос
/ 24 марта 2020

Изменение порядка уровней факторов. Не забудьте поменять группу тоже.

См. Эту связанную ветку , почему я использовал scales::hue() et c

library(tidyverse)

forecast <- c(2,2,1,2,2,3,2,3,3,3,3)
actual <- c(2,2,1,2,2,3,2,3,2,2,1)

my_df <- data.frame(forecast = forecast, actual = actual, seq_order = 1:11) 
my_df <-gather(my_df, line_type, value, -seq_order) %>% mutate(type = factor(line_type, levels = c('forecast','actual')))


ggplot(data=my_df, aes(x=seq_order, y = value, 
                       colour = type, group = type)) +
  geom_line()+
  theme(legend.position="bottom") +
  scale_color_manual(values = rev(scales::hue_pal()(2)))

Создано в 2020-03-24 по представьте пакет (v0.3.0)

...