如何解决如何在R-Plotly的Crosstalk()中的filter_select()中设置默认值
我正在开发一个带有基于情节的交互式图表的 rmarkdown HTML。虽然我可以在图表中完成我想要的所有事情,但来自 crosstalk() 的 filter_select() 不允许我在其中设置默认值。所以我的图表在初始加载时看起来很笨拙而且很糟糕。
上面的讨论有一些输入,但我不知道如何在 crosstalk() 中进行这些编辑,因为我不熟悉 HTML/JS。有人可以帮我提供一些详细的方法吗,
谢谢
解决方法
借用链接问题中的示例,您可以先了解以下内容:
---
output:
html_document
---
```{r echo=FALSE,message=FALSE,warning=FALSE}
library(plotly)
# example data
dat <- tibble::tribble(~filterBy,~x,~y,"a",1,"b",2,3,"c",3
)
# initializing a crosstalk shared data object
plotdat <- highlight_key(dat)
# Filter dropdown
question_filter <- crosstalk::filter_select(
"filter","Select a group to examine",plotdat,~filterBy,multiple = F
)
# Plotting:
plot <- plot_ly( plotdat,x = ~x,y = ~y,text = ~filterBy,mode = "markers+text",textposition = "top",hoverinfo = "x+y"
)
```
您可以将已接受答案中的 js 粘贴到 r 代码末尾下方,就像您在第一个下方创建一个新的 {r}
块一样。
```{js}
function filter_default() {
document.getElementById("filter").getElementsByClassName("selectized")
[0].selectize.setValue("a",false);
}
window.onload = filter_default;
```
要使其对您起作用,您可能需要在 {js}
块中更改一些参数。
1. 首先,您需要回顾一下您用作 filter_select
元素标记的内容。这是第一个论点。在上面的示例中,filter_select("filter",
表示您已使用“过滤器”作为过滤器的标签。
假设我们使用“lantern”作为串扰过滤器的 id。您可以将 document.getElementById("filter")
中的 document.getElementById("lantern")
更改为 {js}
。
2. 接下来,您需要查看默认选择的值。在示例中,该值设置为“a”,并带有 selectize.setValue("a"
块中的 {js}
位。您可以选择数据中存在的任何值作为默认值。例如,如果您有源数据:
other_dat<-data.frame(light=c("bulb","sun","biological"),amount=c(50,1000,3))
您可以使用(请记住,我们已选择将 filter_select 标记为“灯笼”):
```{js}
function filter_default() {
document.getElementById("lantern").getElementsByClassName("selectized")
[0].selectize.setValue("bulb",false);
}
window.onload = filter_default;
```
将默认的 filter_select 值设置为“bulb”,或者:
```{js}
function filter_default() {
document.getElementById("lantern").getElementsByClassName("selectized")
[0].selectize.setValue("sun",false);
}
window.onload = filter_default;
```
将默认值设置为“sun”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。