Изменить имя трассы в легенде после создания сюжета (по пакетам) в ggplot2 - PullRequest
0 голосов
/ 16 мая 2019

Мне интересно, есть ли какой-нибудь простой способ изменить имя в легенде (заданной с использованием эстетики цвета) на ggplot после создания графика.Я знаю, что это немного странно и обычно меняется в данных или при создании графика, но я хочу изменить метку на графике, созданном другим пакетом, и в пакете нет возможности изменить его.

Я мог бы, очевидно, скопировать функцию, сохранить свою собственную версию и изменить ее, но я просто хочу изменить одну вещь, поэтому мне кажется, что лучше, если я смогу это сделать потом.

Вот пример с некоторыми фиктивными данными, в основном я хочу перебросить средние и средние временные ряды, которые получаются из plot_daily_stats fasstr, на «Modeled Mean» и «Modeled Median», чтобы их нельзя было спутать снаблюдаемое среднее, которое я добавляю вручную.

    library(fasstr)
    library(tibble)
    library(ggplot2)

    #create some fake data
    df <- tibble(Date = seq.Date(from = as.Date("1991-01-01"), as.Date("1997-12-31"), 
                                      by = "day"),
                     DayOfYear = as.numeric(format(Date, "%j")),
                     Value = runif(2557,0,1) + 50 + (cos((1/60)*DayOfYear)+4))

    obsdf <- tibble(Date = seq.Date(from = as.Date("1900-01-01"), as.Date("1900-12-31"), 
                            by = "day"),
                 DayOfYear = as.numeric(format(Date, "%j")),
                 Value = runif(365,0,1) + 51 + (cos((1/60)*DayOfYear)+4))



    # create plot using fasstr package
    plt1<- fasstr::plot_daily_stats(df)

    # add my own trace. I also want to rename the trace "Mean" to 
     # "Modelled Mean" to avoid confusion (and same with Median) 
    plt1$Daily_Statistics +
      geom_line(data = obsdf, aes(x = Date, y = Value, colour = "Observed Mean"))+
      scale_colour_manual(values = c("red", "black","blue"))

Имена даны в fasstr в виде жестко закодированных имен:

daily_plots <- ... +
    ggplot2::geom_line(ggplot2::aes(y = Median, colour = "Median")) + 
    ggplot2::geom_line(ggplot2::aes(y = Mean, colour = "Mean"))

1 Ответ

1 голос
/ 16 мая 2019

Хакерство не требуется, просто добавьте метки к вашему ручному весу.

plt1$Daily_Statistics +
  geom_line(data = obsdf, aes(x = Date, y = Value, colour = "Observed Mean"))+
  scale_colour_manual(labels = c("Modelled Mean","Modelled Median","Observed Mean"),
                      values = c("red", "black","blue"))
...