Обновление кнопок не работает на графиках R графика - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь использовать кнопки обновления в графиках R, где пользователь может изменить тип диаграммы на группу или в стек.Гистограмма группы работает впервые, но с накоплением никогда не работает.Ниже приведен код, который я использую.

library(plotly)

Animals <- c("giraffes", "orangutans", "monkeys")
SF_Zoo <- c(20, 14, 23)
LA_Zoo <- c(12, 18, 29)
data <- data.frame(Animals, SF_Zoo, LA_Zoo)

chart_types <- list(
  type = "buttons",
  direction = "right",
  xanchor = 'center',
  yanchor = "top",
  pad = list('r'= 0, 't'= 10, 'b' = 10),
  x = 0.5,
  y = 1.27,
  buttons = list(
        list(method = "restyle",
         args = list("type", "stack"),
         label = "Stack"),
    list(method = "restyle",
         args = list("type", "group"),
         label = "Group")
  ))

p <- plot_ly(data, x = ~Animals, y = ~SF_Zoo, type = 'bar', name = 'SF Zoo') %>%
  add_trace(y = ~LA_Zoo, name = 'LA Zoo')%>% layout(updatemenus = list(chart_types))
p 

1 Ответ

0 голосов
/ 05 февраля 2019

Вы были почти там.Штриховой режим (группа / стек) является параметром макета и не отличается типом диаграммы:

library(plotly)

Animals <- c("giraffes", "orangutans", "monkeys")
SF_Zoo <- c(20, 14, 23)
LA_Zoo <- c(12, 18, 29)
data <- data.frame(Animals, SF_Zoo, LA_Zoo)

chart_layouts <- list(
  type = "buttons",
  direction = "right",
  xanchor = 'center',
  yanchor = "top",
  pad = list('r'= 0, 't'= 10, 'b' = 10),
  x = 0.5,
  y = 1.27,
  buttons = list(
    list(method = "relayout",
         args = list("barmode", "stack"),
         label = "Stack"),
    list(method = "relayout",
         args = list("barmode", "group"),
         label = "Group")
  ))

p <- plot_ly(data, x = ~Animals, y = ~SF_Zoo, type = 'bar', name = 'SF Zoo') %>%
  add_trace(y = ~LA_Zoo, name = 'LA Zoo') %>% layout(updatemenus = list(chart_layouts), barmode="group")
p 

Соответственно, вам нужно использовать relayout вместо restyle.

. Пожалуйста, см. документация для деталей.

...