闪亮的绘图输出中的选择性 y 变量
Posted
技术标签:
【中文标题】闪亮的绘图输出中的选择性 y 变量【英文标题】:Selective y variable in shiny plotly output 【发布时间】: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'。当我删除 .它虽然有效!
【参考方案1】:
这是一个使用get
的简单示例:
library(shiny)
library(plotly)
DF <- setNames(data.frame(rep(1:20, 5), mapply(runif, min = 1:5, max = 2:6, MoreArgs = list(n = 20))), c("x", paste0("y", 1:5)))
library(shiny)
ui <- fluidPage(
plotlyOutput("myPlot"),
selectInput("yvariable", "Select the Y variable", paste0("y", 1:5))
)
server <- function(input, output, session)
output$myPlot <- renderPlotly(
req(input$yvariable)
plot_ly(data = DF, x = ~x, y = ~get(input$yvariable), type = "scatter", mode = "markers")
)
shinyApp(ui, server)
【讨论】:
谢谢!我尝试应用它,但收到错误“无效的第一个参数”。 你能分享一个可重现的例子吗?以上是关于闪亮的绘图输出中的选择性 y 变量的主要内容,如果未能解决你的问题,请参考以下文章