Легенда в многострочном графике в ggplot2 - PullRequest
0 голосов
/ 20 апреля 2020

Я довольно новичок в R и пытаюсь построить три линии временных рядов одновременно на одном графике (используя разные цвета), используя ggplot2. И я хотел бы добавить легенду для трех линий, но не могу создать легенду для графика. Ваши предложения высоко ценятся.

Код
ggplot ggplot(vn, aes(x=date)) + `ggplot enter code here`
      geom_line(aes(y = newcase),size=1, color="red") + 
      geom_line(aes(y = recovered),color="blue", size=1)+ 
      geom_line(aes(y = confirmed), color="green", linetype="solid", size=1)+
      xlab("Date")+
      ylab("People")+
      scale_x_date(date_breaks = "1 week", date_labels = "%d/%m")

Данные
Date        confirmed  recovered   newcase
2020-03-15  56  16  0
2020-03-16  61  16  4
2020-03-17  66  16  3
2020-03-18  75  16  7

1 Ответ

0 голосов
/ 20 апреля 2020

Вы должны сначала попытаться изменить форму вашего фрейма данных, используя, например, функцию pivot_longer из tidyr:

library(dplyr)
library(tidyr)
library(ggplot2)
library(lubridate)

data %>% pivot_longer(cols = confirmed:newcase, names_to = "Cases", values_to = "values") %>%
  ggplot(aes(x = ymd(Date), y = values, color = Cases))+
  geom_line()++
  xlab("Date")+
  ylab("People")+
  scale_x_date(date_breaks = "1 week", date_labels = "%d/%m")

В вашем примере это дает что-то вроде этого:

enter image description here

Это отвечает на ваш вопрос?


Воспроизводимый пример

data <- data.frame(Date = c("2020-03-15","2020-03-16","2020-03-17","2020-03-18"),
                   confirmed = c(56,61,66,75),
                   recovered = c(16,16,16,16),
                   newcase = c(0,4,3,7))
...