Корректировка макета нескольких участков Plotly (R) программно - PullRequest
1 голос
/ 11 июля 2019

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

p<- layout(p, xaxis = list(rangeslider = list(type = "date")))

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

p<- layout(p,
            yaxis = list(fixedrange = F),
            yaxis2 = list(fixedrange = F),
            yaxis3 = list(fixedrange = F),
             ...)

Однако, так как количество графиков меняется, мне нужен программный способ сделать это.Обратите внимание, что объект plotly генерируется с помощью ggplotly, и поэтому у меня нет доступа к отдельным подсюжетам для передачи там параметров макета.

Я попытался передать список в макет, но это не похожедля получения правильного результата:

layoutlist <- list(yaxis = list(fixedrange = F), yaxis2 = list(fixedrange = F), yaxis3 = list(fixedrange = F), ...)
p<- layout(p, layoutlist)

не возвращает ошибку, но также не применяет параметры макета должным образом.

Я также попытался использовать расстановку кавычек (!!) для решения проблемыно я не смог заставить его работать.

Вот пример кода для репликации:

(эта часть не может быть изменена)

subplots_list <- list()
for(i in 1:5){
  subplots_list[[i]] <- plot_ly()
}
p<- subplot(subplots_list, nrows = 5, shareX = T)

Ожидаемый результат

p<- p %>% layout(xaxis = list(rangeslider = list(type = "date")))
p<- p %>% layout(
               yaxis = list(fixedrange = F),
               yaxis2 = list(fixedrange = F),
               yaxis3 = list(fixedrange = F),
               yaxis4 = list(fixedrange = F),
               yaxis5 = list(fixedrange = F)
               ) 

Заранее спасибо за помощь.

...