Чтобы добавить легенду по форме в ggplot (добавлен 2-й вопрос после: для вычисления числовой производной) - PullRequest
4 голосов
/ 20 сентября 2019

Я пытаюсь добавить легенду по форме.

У меня есть изображение с одной легендой, несмотря на две формы и две оси y.

enter image description here

и я хотел бы получить две группы легенд, по одной для каждого топора у.

enter image description here

правка: вопрос 2 добавлен после

2) Фактически это было для отображения числовых производных, т.е. для замены моего calc=t/10 на функцию, выполняющую

f (x) = (t_n-t_n-1) / (date_time_n / date_time_n -1)

где f (x) будет моим столбцом вычислений.

но я думаю, что я не понимаю, производное от R.

мой следующий вопрос там: Как более простое производное записывается в R группой (в R, ggplot, dplyr, tidyverse)?

конец редактирования

Вот мойпредстав

library(tidyverse)
library(ggplot2)

datas<-data.frame(
  t = c(
    50 + c(0, cumsum(runif(9, -7, 7))),
    70 + c(0, cumsum(runif(9, -10, 10)))
  ),
  orig=c(rep("s1",10),rep("s2",10)),
  date_heure = rep(
    seq(from=as.POSIXct("2012-1-1 0:00", tz="UTC"),by="hour", length=10) ,
    2
  ) 
)


datas<- (datas 
         %>% mutate (
           calc=t/10
         )
)

(
  ggplot(datas) 
  +   geom_line(aes(x = date_heure, y = t,colour=orig))
  +   geom_line(aes(x = date_heure, y = calc, color=orig))
  + scale_y_continuous(
    name = "t", 
    sec.axis = sec_axis(trans=~(range(datas$calc)), 
                        name = "calc ")
  )
  + geom_point(mapping = aes(x = date_heure, y = calc,color=orig), shape = 21, fill = "white") 
)

1 Ответ

0 голосов
/ 20 сентября 2019

Вы можете использовать свойство linetype и вручную назначать имена легенды и цвета линий следующим образом:

(
  ggplot(datas) 
  +   geom_line(mapping=aes(x = date_heure, y = t, color=orig, linetype = "s1"))
  +   geom_line(mapping=aes(x = date_heure, y = calc, color=orig, linetype = "s2"))
  +   scale_y_continuous(name = "t", sec.axis = sec_axis(trans=~(range(datas$calc)), name = "calc"))
  +   geom_point(mapping = aes(x = date_heure, y = calc, color=orig), shape = 21, fill = "white")
  +   scale_color_manual(name = "calc", values=c("red", "blue"))
  +   scale_linetype_manual(name = "orig", values = c('solid', 'solid'), 
                            guide = guide_legend(override.aes = list(colour=c("red", "blue"))))

)

Это создает следующий график:

enter image description here

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...