我正在开发一个rmarkdown HTML,它带有基于plotly的交互式图表。虽然我可以在图表中完成我想要的所有内容,但是crossok()中的filter_select()不允许我在其中设置默认值。所以我的图表在初始加载时看起来笨拙和糟糕。选择一个默认值在一个R plotly图使用一个选择框通过串扰在R,使用静态html不闪亮上面的讨论有一些输入,但我不知道如何在crossword()中进行这些编辑,因为我不熟悉HTML/JavaScript。
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”。
dsf9zpds2#
如果在一个页面上有多个选择输入。而且,$(document).ready()比window.onload工作得更好。
$(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);
2条答案
按热度按时间juud5qan1#
借用链接问题中的示例,您可以从以下内容开始:
other_dat<-data.frame(light=c("bulb","sun","biological"),amount=c(50,1000,3))
dsf9zpds2#
如果在一个页面上有多个选择输入。而且,
$(document).ready()
比window.onload
工作得更好。