Цветные линии в сюжете р отдельно от маркеров - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь найти способ сохранить цвет линии в моем графическом графике, даже если цвета маркера меняются.Я объясню ... пример набора данных:

mtcars$vs<-as.factor(mtcars$vs)
mtcars$gear<-as.factor(mtcars$gear)
mtcars$Date<-sample(seq(as.Date('2016/01/01'), as.Date('2018/01/01'), by="day"), 32)

Я сделал график, который я хочу:

pal <- c("red", "blue", "green")

mtcars %>% 
  group_by(vs) %>%
  mutate(fit = fitted(loess(mpg ~ as.numeric(Date))))%>%
  plot_ly(x = ~Date, 
          colors=pal, showlegend = T) %>%
  add_markers( y = ~mpg, color= ~vs, alpha = 0.4) %>%
  add_lines(y = ~fit, color = ~vs,line=list(width=4), colors=pal) %>%
  layout(xaxis = list(title="Date"), title="All")

, который дает мне enter image description here

Когда я изменяю ввод маркера следующим образом:

mtcars %>% 
  group_by(vs) %>%
  mutate(fit = fitted(loess(mpg ~ as.numeric(Date))))%>%
  plot_ly(x = ~Date, 
          colors=pal, showlegend = T) %>%
  add_markers( y = ~mpg, color= ~gear, alpha = 0.4) %>%
  add_lines(y = ~fit, color = ~vs,line=list(width=4), colors=pal) %>%
  layout(xaxis = list(title="Date"), title="All")

Но тогда цвета линий также меняются, я бы хотел, чтобы они оставались зелеными, а красные .. enter image description here

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

Может ли кто-нибудь мне помочь?Был бы очень признателен!

1 Ответ

0 голосов
/ 12 октября 2018

Нашли это!На самом деле немного глупо, просто использовал неправильный цветовой код:

df1<-mtcars%>%  
  filter(vs=="0")%>%
  mutate(fit1 = fitted(loess(mpg ~ as.numeric(Date))))

df2<-mtcars%>%  
  filter(vs=="1")%>%
  mutate(fit2 = fitted(loess(mpg ~ as.numeric(Date))))


  plot_ly(mtcars, x = ~Date, 
          showlegend = T) %>%
  add_markers( y = ~mpg, color= ~vs) %>%
  add_lines(data=df1, y = ~fit1, line = list(color = 'rgb(22, 88, 229)')) %>%
  add_lines(data=df2, y = ~fit2, line = list(color = 'rgb(226, 124, 6)')) %>%
  layout(xaxis = list(title="Date"))

  plot_ly(mtcars, x = ~Date, 
          showlegend = T) %>%
    add_markers( y = ~mpg, color= ~gear) %>%
    add_lines(data=df1, y = ~fit1, line = list(color = 'rgb(22, 88, 229)')) %>%
    add_lines(data=df2, y = ~fit2, line = list(color = 'rgb(226, 124, 6)')) %>%
    layout(xaxis = list(title="Date"))

Должен быть более быстрый способ сделать это, но, по крайней мере, это работает:)

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