我正在研究一种解决方案,它具有第二个下拉菜单,该菜单会根据第一个下拉菜单的选择而改变。例如在下面的示例中。第一个下拉菜单(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
我知道在这里不问问题,但我不能发表评论。您自己找到了解决方案吗?因为在Python中矿石较少,所以同样的问题