plotly(R):基于第一个选择更新第二个下拉菜单

问题描述 投票:0回答:1

我正在研究一种解决方案,它具有第二个下拉菜单,该菜单会根据第一个下拉菜单的选择而改变。例如在下面的示例中。第一个下拉菜单(menu1)对特定数据过滤数据帧。而且有效。但是我希望第二个下拉菜单中只有两个选项:选择1(值“ Scatter 1”和“ Line 1”)或选择2(值“ Scatter 2”和“ Line 2”)。目前,代码提出了四种可能性。有没有人有解决方案以交互方式更新第二个下拉菜单中的选择列表?

require(plotly)

button1 <- c(rep("Choice 1",10),rep("Choice 2",10))
df <- data.frame(button1 = button1, x = runif(20), y = runif(20))

menu1 <- list(
  type = 'dropdown',
  active = 0,
  buttons = apply(as.data.frame(unique(df$button1)), 1, 
                  function(x) list(method = 'restyle',args = list('transforms[0].value',x),label = x)))

choice1 <- list(list(  method="update",  args=list(list(visible=c(T,F))),  label="Scatter 1"),
                list(  method="update",  args=list(list(visible=c(F,T))),  label="Line 1"))

choice2 <- list(list(  method="update",  args=list(list(visible=c(T,F))),  label="Scatter 2"),
                list(  method="update",  args=list(list(visible=c(F,T))),  label="Line 2"))

menu2 <- list(
  active=0,
  y = 0.9,
  buttons=c(choice1,choice2)
)


p <- plot_ly(x=df$x,y=df$y,transforms = list(list( 
  type = 'filter',
  target = ~button1,
  operation = '=',
  value = unique(df$button1)[1]))
)

p <- add_trace(p, data=df, x=~x, y=~y, type="scatter", mode="markers")
p <- add_trace(p, data=df, x=~x, y=~y, type="scatter", mode="markers+lines",visible=F)


pf <- layout(p, updatemenus=list(menu1,menu2))
pf
r plotly
1个回答
0
投票

我知道在这里不问问题,但我不能发表评论。您自己找到了解决方案吗?因为在Python中矿石较少,所以同样的问题

© www.soinside.com 2019 - 2024. All rights reserved.