【发布时间】:2021-05-25 23:43:54
【问题描述】:
我试图在一个闪亮的应用程序中包含一个情节图,其中 y 变量由用户选择。我最初使用 ggplot2 和 plotly 一起使用,并且我的代码可以正常工作。但是因为数据点的数量很大,所以该图需要几分钟才能加载,所以我尝试切换到 plotly 只是因为我在某个地方读到了它,这使它更快。不幸的是,我无法让 y 变量选择起作用。
我已经尝试过这里给出的建议:Change plotly chart y variable based on selectInput 和这里:Error: invalid first argument with R Shiny plot,但它们都不起作用。在这一点上,我已经尝试了很多我不记得详细的事情,但基本上我要么在使用 yvar <- get(input$yvariable1) 的某些变体时得到错误“无效的第一个参数”,然后在绘图函数中包含 ~yvar,或者我得到当它是y = ~input$yvariable1 时,“错误:无法在符号上设置属性”。当我使用 y = newdata[ ,input$yvariable1] 时,有些东西被绘制了,但它完全错误(轴的比例高达 50k 或其他东西而不是 10 并且分布也不正确 - 基本上它看起来不像我通过简单地输入相同的值来绘制它y 非反应性变量)。
我的代码如下 - 在 UI 中:
uiOutput("ySelection1")
在服务器中:
function(input, output) {
output$ySelection1 <- renderUI({
varSelectInput("yvariable1", "Y Variable:", df[, c('PO_count_citing', 'cpc_3digits_count_citing', 'cpc_4digits_count_citing')], selected='PO_count_citing')
})
yvar1 <- eventReactive(input$yvariable1, {input$yvariable1})
output$plot1 <- renderPlotly({
newdata <- subset(df, Technology == input$type & appln_auth%in%input$PO)
validate(no_data(nrow(newdata)))
#yvar <- get(yvar1()) (failed attempt at making this work)
#yvar <- get(input$yvariable1) (another failed attempt)
scatterPlot <- plot_ly(newdata, x = ~appln_filing_year, y = ~input$yvariable1, type="scatter", mode="markers",
# Hover text:
text = ~paste(some text),
color = ~appln_auth)
})
}
但我无法让它工作。在最初的 ggplot2 版本中,它输入为aes(x = appln_filing_year, y = !!yvar1(), bla bla)
但是!!甚至一个!或删除 yvar1 之后的括号都会在情节中引发错误。
有人有什么建议吗?
【问题讨论】:
-
试试
y = ~.data[[as.name(input$yvariable1)]] -
嗨,YBS,谢谢!我试过了,但没有找到错误对象'.newdata'。当我删除 .它虽然有效!
标签: r shiny plotly r-plotly selectinput