如何移除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
相关产品推荐
相关产品推荐

