Вот решение на основе того, что в python из предоставленной ссылки ; было немного сложно понять, как глубоко вложить все list
с. Если вы не добавляете видимость к трассам, вы можете заменить ее ссылкой на набор данных.
library(plotly)
library(magrittr)
# Fake data
data <- data.frame(x = c(1, 2, 3),
y = c(1000, 10000, 100000),
y2 = c(5000, 10000, 90000))
# Initial plot with two traces, one off
fig <- plot_ly(data) %>%
add_trace(x = ~x, y = ~y, type = 'scatter', mode = 'lines', name = 'trace1') %>%
add_trace(x = ~x, y = ~y2, type = 'scatter', mode = 'lines', name = 'trace2', visible = F)
# Update plot using updatemenus, keep linear as first active, with first trace; second trace for log
fig <- fig %>% layout(title = 'myplot',
updatemenus = list(list(
active = 0,
buttons= list(
list(label = 'linear',
method = 'update',
args = list(list(visible = c(T,F)), list(yaxis = list(type = 'linear')))),
list(label = 'log',
method = 'update',
args = list(list(visible = c(F,T)), list(yaxis = list(type = 'log'))))))))
Вывод выглядит так: