如何在R - Plotly中设置filter_select()中的默认值

wvyml7n5  于 2023-05-20  发布在  其他
关注(0)|答案(2)|浏览(170)

我正在开发一个rmarkdown HTML,它带有基于plotly的交互式图表。虽然我可以在图表中完成我想要的所有内容,但是crossok()中的filter_select()不允许我在其中设置默认值。所以我的图表在初始加载时看起来笨拙和糟糕。
选择一个默认值在一个R plotly图使用一个选择框通过串扰在R,使用静态html不闪亮
上面的讨论有一些输入,但我不知道如何在crossword()中进行这些编辑,因为我不熟悉HTML/JavaScript。

juud5qan

juud5qan1#

借用链接问题中的示例,您可以从以下内容开始:

---
output:
  html_document
---

```{r echo=FALSE, message=FALSE, warning=FALSE}

library(plotly)
# example data 
dat <- tibble::tribble(~filterBy, ~x, ~y,
                    "a", 1, 1,
                    "b", 2, 1,
                    "a", 1, 2,
                    "b", 2, 2,
                    "a", 1, 3,
                    "b", 2, 3,
                    "a", 1, 2,
                    "b", 2, 3,
                    "c", 3, 1,
                    "c", 3, 2,
                    "c", 3, 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}`代码块一样。
function filter_default() {
    document.getElementById("filter").getElementsByClassName("selectized") 
[0].selectize.setValue("a", false);
 }
window.onload = filter_default;

为了让它为你工作,你可能需要在`{js}`块中修改一些参数。

**1.**首先,您需要回顾一下`filter_select`元素的标记。这是第一个论点。在上面的例子中,`filter_select("filter",`意味着你已经使用了“filter”作为过滤器的标签。

假设我们使用“lantern”作为串扰滤波器的id。您可以在`{js}`中将`document.getElementById("filter")`更改为`document.getElementById("lantern")`。

**2.**接下来,您需要查看默认选择的值。在该示例中,该值被设置为“a”,其中`{js}`块中的`selectize.setValue("a"`位。您可以选择数据中存在的任何值作为默认值。例如,如果您有源数据:

other_dat<-data.frame(light=c("bulb","sun","biological"),amount=c(50,1000,3))


你可以使用(记住我们选择将filter_select标记为“lantern”):
function filter_default() {
    document.getElementById("lantern").getElementsByClassName("selectized") 
[0].selectize.setValue("bulb", false);
 }
window.onload = filter_default;

要将默认filter_select值设置为“bulb”,或:
function filter_default() {
    document.getElementById("lantern").getElementsByClassName("selectized") 
[0].selectize.setValue("sun", false);
 }
window.onload = filter_default;

将默认值设置为“sun”。
dsf9zpds

dsf9zpds2#

如果在一个页面上有多个选择输入。而且,$(document).ready()window.onload工作得更好。

function filter_default(){
  document.getElementById("course_name").getElementsByClassName("selectized")[0].selectize.setValue("Course 1",false) 
  document.getElementById("Student_Group_Name").getElementsByClassName("selectized")[0].selectize.setValue("Group 1",false)
  document.getElementById("student_group_name_2").getElementsByClassName("selectized")[0].selectize.setValue("Group 1",false)
}
    
$(document).ready(filter_default);

相关问题