Добавление второй оси Y на ggplotly - PullRequest
0 голосов
/ 16 октября 2018

Я создал следующий объект и граф данных с использованием plotly и ggplot

library(ggplot2)
library(plotly)

rdate <- function(x,
              min = paste0(format(Sys.Date(), '%Y'), '-01-01'),
              max = paste0(format(Sys.Date(), '%Y'), '-12-31'),
              sort = TRUE) {          
  dates <- sample(seq(as.Date(min), as.Date(max), by = "day"), x, replace=TRUE)
  if (sort == TRUE) {
    sort(dates)
  } else {
    dates
  }
}

DF<-data.frame(Date = rdate(100))
DF$variable<-LETTERS[seq( from = 1, to = 10 )]
DF$Value<-round(runif(1:nrow(DF),min = 10, max = 50))

Далее я создал объект plot с ggplot

 p <- ggplot(DF, aes(x = Date, y = Value, colour = variable)) + 
  geom_line() + 
  ylab(label="Sellcount") + 
  xlab("Sell Week")
  p<-p + scale_y_continuous(sec.axis = dup_axis())
  ggplotly(p)

Если я строю p с использованием plot (p) график имеет 2 якс, как я и ожидал.Однако, когда я использую ggplotly (p) для построения графика, генерируется только одна ось Y.Я не могу найти какую-либо литературу в Интернете о том же.Я прошу кого-то помочь мне в этом.

1 Ответ

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

Простой обходной путь - добавить вторую ось вручную:

ay <- list(
  tickfont = list(size=11.7),
  titlefont=list(size=14.6),
  overlaying = "y",
  nticks = 5,
  side = "right",
  title = "Second y axis"
)

ggplotly(p) %>%
  add_lines(x=~Date, y=~Value, colors=NULL, yaxis="y2", 
            data=DF, showlegend=FALSE, inherit=FALSE) %>%
  layout(yaxis2 = ay)

enter image description here

...