- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个简单的应用程序,其中包括 selectInput
小部件和 rCharts
中的条形图。我想要完成的是创建带有所有三本书的图例的绘图,但默认情况下仅显示小部件选择的一本书。因此,当我从 Book1
更改为 Book2
时,绘图最初将仅显示有关 Book2
的信息,但图例图将包含 Book1
> 和 Book3
(默认情况下均禁用) - 如果我愿意,我可以随时选择 Book1
或 Book3
。我相信这是 JS 问题,所以我尝试解决它,但没有任何改变。有什么想法如何处理吗?谢谢。
library(shiny)
library(rCharts)
books <- c('Book1','Book2','Book3')
df <- data.frame(book = rep(books, each = 10),
year = rep(2000:2009,3),
sale = sample(100:1000, 30, replace = T))
ui <- shinyUI(
fluidPage(
HTML("
<script>
$( document ).ready(function() {
if ( $(\"select#book div.selectize-dropdown div[data-value='Book1']\").hasClass('selected')) {
console.log('true');
$('#nvd3Plot .nv-legend g.nv-series').eq(1).addClass('disabled');
$('#nvd3Plot .nv-legend g.nv-series').eq(2).addClass('disabled');
}
else {
console.log('false');
}
});
</script>"),
selectInput('book', 'Select a book', choices = books, selected = 'Book1'),
showOutput("nvd3Plot", "nvd3")
)
)
server <- function(input, output, session) {
output$nvd3Plot <- renderChart2({
chartObject <- nPlot(sale ~ year, group = "book", data = df, type = "multiBarChart")
chartObject$chart(
showControls = FALSE
)
return(chartObject)
})
}
shinyApp(ui, server)
更新
我找到了这个solution但实际上我不知道如何在 R 中实现它。
最佳答案
使用 here 中的答案,您可以使用自定义消息处理程序以编程方式单击图例。
您可以在 ui.R
中添加:
tags$script('
Shiny.addCustomMessageHandler("change_selected_book",
function(book) {
d3.select("g.nv-legendWrap").selectAll("g.nv-series.disabled")
.each(function(d) {
this.dispatchEvent(new Event("click"));
});
d3.select("g.nv-legendWrap").selectAll("g.nv-series").filter(
function(d) { return d.key != book; })
.each(function(d) {
this.dispatchEvent(new Event("click"));
});
});
')
并在您的server.R
中:
observe({
session$sendCustomMessage(type = "change_selected_book", input$book)
})
该代码单击所有已禁用的系列,一旦启用所有系列,它就会单击除用户选择禁用的那本书之外的所有书籍的图例。
一个缺点是 selectInput
元素是在图表之前创建的,因此它最初会显示所有三本书,直到用户选择一本书。
关于javascript - 通过 selectInput 操作图例 - rCharts 中的 multibarChart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38566271/
我在下面有一些数据,用于在 R Shiny 中创建圆环图,其中 date是一个字符。我希望能够选择我想要查看其分数的电子邮件,但是在第二个下拉选择中只能看到该电子邮件具有事件的日期。 例如,如果我在第
我有两个 selectInput,我希望第一个(品牌)中的选择更改第二个(糖果)中的可能选择。因此,例如,如果有人在第一个输入框中选择“雀巢”,那么第二个框中只会显示雀巢糖果。我的数据表有一列“品牌”
每当具有不同输入 ID 的另一个 selectInput 的值发生变化时,我需要更改一个具有自己输入 ID 的 selectInput 的值。 在 javascript 中,这将是 onchage,但
下面的 R shiny 脚本创建了三个 selectInput,每个 selectInput 的值都取决于前一个 selectInput 的输入值。例如。在脚本中的数据中,“value”列的值取决于“
在下面的 R Shiny 脚本中,我试图使功能使得在第一个子菜单项中,每个 selectInput 值都取决于上一列中的项目选择。数据附上,代码也写好了。但是我无法达到预期的结果。请运行代码并检查,我
我在 .rmd 文件中使用 shiny 并从 .csv 文件中填充一个 selectInput 选择列表,从中获取唯一值一个子集。 我的问题是下拉列表包含我不想要的列标题(在我下面的示例中为“区域”)
我想删除/减少 Shiny 中 selectinput 的标签和选择选项之间的空间。我还想减少两个不同的选择输入之间的空间。 我曾尝试将 selectinputs 包装成 div 样式并将边距和填充设
如何禁用 selectInput() 下拉菜单中的项目? 例如; library(shiny) ui <- fluidPage(selectInput("id1","Select",choices=c
Shiny 的函数 selectInput() 提供了一个选项,可以从带有“multiple = TRUE”的下拉列表中选择多个项目 但是我想限制用户从基础下拉列表中最多可以选择多少个项目。 您能否建
Shiny 的 documentation提到了 selectInput() : selected The value (or, if none was supplied, the title) of
最初我创建了这个带有参数“company id”和“date”的 Shiny 界面,但这里我们遇到了一个问题:大多数人不知道他们的 id 与我们合作的公司,只知道他们的名字,即(McDonalds,R
我有一个 selectInput,其中显示了所有可能的选项。我想实现它,如果用户在框中键入内容并按回车键,它也将作为选项添加。 observeEvent(input$mykeypress, { if(
在一个 Shiny 的应用程序中,有没有办法阻止 selectInput() 中下拉菜单的文本?从包装,如下面的屏幕截图?每个选项都是一个长文本字符串。我希望下拉菜单在一行上显示每个长字符串,而不需要
我想以“可写”的方式修改我的 selectInput。例如,“位置”包含阿姆斯特丹、鹿特丹、海牙等。我想实现一个“可写”的输入选择器。因此,当有人写“Ams..”或“Amster...”时,会显示符合
目标 我想在我的 shinydashboard::box 的页脚中并排放置一个 selectInput 和一个 actionButton。该按钮应该“相对靠近”selectInput不考虑框的宽度。
我正在尝试在我的两个动态链接的 selectInput 小部件中添加一个 ALL 选项,它会过滤到我的主面板中的一个图表。基本上,我希望用户选择一项服务,例如在线或邮购,或所有服务,与 Prof.Lo
如何观察取消选择selectInput的所有元素在 shiny ? 例如 library(shiny) ui=shinyUI(fluidPage( selectInput("select","",
我正在开发一个小型的 Shiny 应用程序,它将提供对一些公开可用的劳动力市场数据的访问。我有一个长格式的相对简单的数据集,类似于下面的摘录: 数据 Geography Measure Time
我正在构建一个 Shiny 的应用程序,用户可以通过从 selectInput() 中选择船只类型来查看各种类型的船只。根据选择,血管被过滤并显示在传单 map 上。但是,selectInput 中的
我遇到嵌套 selectInput 的问题s 在 shiny 内模块。 考虑以下最小示例应用程序 library(shiny) options <- list(A = 1:3, B = 4:6) mo
我是一名优秀的程序员,十分优秀!