ggplot2 多线图中的图例
Legend in multiple line graph in ggplot2
我是 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
您应该首先尝试使用来自 tidyr
的 pivot_longer
函数重塑数据框:
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")
用你的例子,它给出了类似的东西:
它是否回答了您的问题?
可重现的例子
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))
我是 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
您应该首先尝试使用来自 tidyr
的 pivot_longer
函数重塑数据框:
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")
用你的例子,它给出了类似的东西:
它是否回答了您的问题?
可重现的例子
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))