【问题标题】:Legend in multiple line graph in ggplot2ggplot2中多线图中的图例
【发布时间】:2020-04-20 16:33:21
【问题描述】:

我对 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

【问题讨论】:

  • 问题是您绘制了三个独立的geom_line(),每个都有手动定义的颜色。要使用图例,您需要将数据转换为长格式(tidyr::pivot_longer() 可以做到这一点!),这样您就可以绘制一个变量,并使用一个 geom_line(aes(color = variablename)) 绘制它们。问题herehere 与您的问题相似,可以提供帮助。
  • 你的建议真的很有帮助,所以我的问题解决了。非常感谢

标签: r ggplot2 legend linegraph


【解决方案1】:

您应该首先尝试使用来自tidyrpivot_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))

【讨论】:

  • 正是我需要的,感谢您的帮助,我现在可以解决问题了。非常感谢您的热心帮助
  • 不客气 ;) 如果您对此答案感到满意,请随时接受和/或投票,以便让人们知道这个问题已经解决。更多信息:stackoverflow.com/help/someone-answers
猜你喜欢
  • 2013-03-05
  • 2013-11-23
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 2016-10-20
  • 2016-08-05
  • 1970-01-01
  • 2018-05-11
相关资源
最近更新 更多