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

如何移除Plotly中filter_select的(All)选项?或指定默认选项?

嘿,针对你遇到的filter_select里(All)选项的问题,结合你用的crosstalk 1.2.0、plotly 4.10.1版本,我有两个实用的解决方案:

方案1:直接移除(All)选项(最推荐)

刚好crosstalk 1.2.0给filter_select加了个allLevels参数,默认是TRUE(显示(All)),把它设成FALSE就能直接干掉这个选项,而且页面加载时会自动选中第一个实际的分组选项,完美匹配你的需求:

trends_age_final <- bscols(widths=c(2,10),
                           list(filter_select(id='tr_boro', 
                                              label='Borough', 
                                              sharedData=shared_trends_age, 
                                              group=~boro, 
                                              multiple=F,
                                              allLevels=FALSE)), # 就是这个关键参数
                           trends_age_subplot)

改完之后,筛选器里就只有你定义的各个Borough选项了,打开页面直接展示第一个分组的数据,不用再手动切换。

方案2:保留(All)但指定默认选中项

要是你不想删掉(All),只是想默认显示某个特定分组的数据,那可以用crosstalk的JS API来设置初始筛选值。比如我想默认选中"Brooklyn":

library(htmlwidgets)

trends_age_final <- bscols(widths=c(2,10),
                           list(filter_select(id='tr_boro', label='Borough', sharedData=shared_trends_age, group=~boro, multiple=F)),
                           trends_age_subplot) %>%
  onRender("
    function(el, x) {
      // 拿到对应的sharedData对象,ID要和你创建shared_trends_age时的一致哦
      const sharedData = crosstalk.sharedData.get('shared_trends_age');
      // 设置默认选中的分组,键名要和filter_select的id(tr_boro)完全匹配
      sharedData.setFilter({tr_boro: 'Brooklyn'});
    }
  ")

小提醒:

  • 要保证setFilter里的键名tr_boro和你filter_select的id完全一样;
  • 目标分组的值(比如"Brooklyn")必须和你数据里boro列的实际值完全匹配,大小写都不能错。

这样页面加载后,筛选器会自动选中你指定的分组,图表也会同步显示对应的数据啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:50:23