Макет Plotly не отображает несколько осей Y при использовании assign () - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь создать блестящее приложение, в котором пользователь может построить график и выбрать, сколько графиков будет построено на одном графике. Каждый график должен добавить свою ось Y к графику. Пока мне удалось сделать это вручную, если известно число осей y. Однако, поскольку пользователь выбирает, сколько осей y ему нужно, это будет контролироваться переменной ynum. Я застрял в вопросе, почему это работает нормально:

x = 1:10
data = data.frame(x = x, ax1 = x, ax2 = x^2, ax3 = x^3)

p = plot_ly(data, type = 'scatter', mode = 'lines') %>%
  add_trace(x = ~x, y = ~ax1, name='ax1') %>%
  layout(
    xaxis = list(title = "x-axis", domain=c(0.25,1)),
    yaxis = list(title = 'ax1 axis', zeroline = FALSE, 
                 side = "left", showgrid=F, position = 0)
  ) 

ynum = 2
p = p %>% 
  add_trace(x = ~x, y = ~get(paste0('ax',ynum)), name=paste0('ax',ynum), 
            yaxis=paste0('y',ynum)) %>%
  layout(
    yaxis2 = list(title = paste0('ax',ynum,' axis'), zeroline = FALSE, side = "left",
              overlaying = 'y', showgrid=F, position = 0.07*ynum, anchor = 'free')
  )
p

Но когда я использую это:

x = 1:10
data = data.frame(x = x, ax1 = x, ax2 = x^2, ax3 = x^3)

p = plot_ly(data, type = 'scatter', mode = 'lines') %>%
  add_trace(x = ~x, y = ~ax1, name='ax1') %>%
  layout(
    xaxis = list(title = "x-axis", domain=c(0.25,1)),
    yaxis = list(title = 'ax1 axis', zeroline = FALSE, 
                 side = "left", showgrid=F, position = 0)
  ) 

ynum = 2
p = p %>% 
  add_trace(x = ~x, y = ~get(paste0('ax',ynum)), name=paste0('ax',ynum), 
            yaxis=paste0('y',ynum)) %>%
  layout(
    assign(paste0('yaxis',ynum), list(title = paste0('ax',ynum,' axis'), zeroline = FALSE, side = "left",
                                   overlaying = 'y', showgrid=F, position = 0.07*ynum, anchor = 'free'))
  )
p

в функции макета, он пропускает первый график?

Единственное, что я делаю, это меняю заранее известный yaxis2 на переменную yaxis, заданную assign(paste0('yaxis',ynum), axis_attributtes).

Ожидаемый результат выглядит следующим образом plot

Так почему же не отображаются все графики со второй версией? Спасибо за любые предложения

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