在ggplot多线图上缺少传奇

时间:2017-11-06 02:01:14

标签: r plot ggplot2 legend

我正在从包含每年最小值,平均值和最大值的数据框中按年绘制年度温度数据。我一直无法在我的情节上得到一个传奇。理想情况下,图例应具有图例标题,并将线条颜色标记为Min,Mean和Max。

任何帮助都将不胜感激。

数据看起来像(示例),数据名为“s”:

Example data

代码:

ggplot(s, aes(Year)) + 
geom_line(aes(y=min), color="blue") +
geom_line(aes(y=mean), color="green") + 
geom_line(aes(y=max), color="red") + 
ggtitle("Fort Collins Mean Annual Temperature") + 
ylab("Temperature (degF)")

剧情:

enter image description here

1 个答案:

答案 0 :(得分:1)

以下是一些与您类似的可重现数据:

set.seed(123)
df1 <- data.frame(Year = 1893:1903, 
                  min  = sample(-5:10, 11, replace = TRUE), 
                  mean = sample(50:70, 11, replace = TRUE), 
                  max  = sample(90:100, 11, replace = TRUE), 
                  n    = sample(150:350, 11, replace = TRUE))

如果gather将温度分成一列并按类型标记,则图例会自行处理。

library(tidyverse)
df1 %>% 
  gather(measurement, value, -n, -Year) %>% 
  ggplot(aes(Year, value)) + 
    geom_line(aes(group = measurement, color = measurement)) +
    scale_x_continuous(breaks = 1893:1903) +
    labs(y = "Temperature (F)", title = "Fort Collins Annual Temperature") + 
    theme_bw()

enter image description here