You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Plotly R中如何在restyle方法的单个参数内更新多个数据属性

问题原因

你当前的写法不符合Plotly R接口中restyle方法的参数结构要求:在R中同时更新多个属性时,所有需要修改的属性及对应取值需要统一放在args参数的第一个嵌套列表内,以键值对形式声明,不能像Python/JS一样将属性和值依次平铺在args的顶层元素中。

正确修改方案

仅需要调整create_buttons函数内的args参数写法即可,修改后的完整代码如下:

library(plotly)

df <- data.frame(x = runif(200), y = runif(200), z = runif(200), j = runif(200), k = rep(0.7, 200), i = rnorm(200,0.6,0.05))

create_buttons <- function(df, y_axis_var_names) {
  lapply(
    y_axis_var_names,
    FUN = function(var_name, df) {
      button <- list(
        method = 'restyle',
        # 调整后的多属性更新写法
        args = list(
          list(
            y = list(df[, var_name]),
            x = list(df[, var_name])
          )
        ),
        label = sprintf('Show %s', var_name)
      )
    },
    df
  )
  
}

y_axis_var_names <- c('y', 'z', 'j', 'k', 'i')

p <- plot_ly(df, x = ~x, y = ~y, mode = "markers", name = "A", visible = T) %>%
     layout(
         title = "Drop down menus - Styling",
         xaxis = list(domain = c(0.1, 1)),
         yaxis = list(title = "y"),
         updatemenus = list(
             list(
                 y = 0.7,
                 buttons = create_buttons(df, y_axis_var_names)
             )
         ))
p

如果只需要更新部分属性、不需要修改x的取值,直接删除上述args嵌套列表内的x字段即可。


内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:18:01