使用ggplot将图例添加到多个时间序列图

时间:2016-01-08 15:26:41

标签: r ggplot2 time-series legend

我想要在同一个图表上显示两个时间序列数据。 两个系列都有三列:日期,县和价值。 这是我的代码:

#Data
Series1 <- data.frame(Date = c(2000,2001,2000,2001), County = c("a", "a", "b", "b"),Total = c(100,150,190,130))
Series2 <- data.frame(Date = c(2000,2001,2000,2001), County = c("a", "a", "b", "b"),Total = c(180,120,140,120))

#Plot data
ggplot() + 
    geom_line(data = Series1, aes(x = Date, y = Total, color = County), linetype="solid") +
    geom_line(data = Series2, aes(x = Date, y = Total, color = County), linetype="dashed")

情节如下:

plot

现在我只需添加一个图例,显示实线代表Series1,虚线代表Series2。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

当您使用aes()将数据列映射到美学时,会自动创建图例。您没有要映射到线型审美的数据列,因此我们需要创建一个。

Series1$series = 1
Series2$series = 2
all_series = rbind(Series1, Series2)

现在我们将所有数据放在一起,绘图很简单:

ggplot(all_series,
       aes(x = Date, y = Total, color = County, linetype = factor(series))) + 
    geom_line()

自动图例,只有一个geom_line来电,使用ggplot因为它的意思是使用:整齐的数据。

答案 1 :(得分:1)

你真的很亲密......

ggplot() + 
      geom_line(data = Series1, aes(x = Date, y = Total, color = County), linetype="solid") +
      geom_line(data = Series2, aes(x = Date, y = Total, color = County), linetype="dashed")+ scale_linetype_manual()

enter image description here