Я пытаюсь создать блестящее приложение, в котором пользователь может построить график и выбрать, сколько графиков будет построено на одном графике. Каждый график должен добавить свою ось 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)
.
Ожидаемый результат выглядит следующим образом
Так почему же не отображаются все графики со второй версией? Спасибо за любые предложения