gpt4 book ai didi

r - 单击 ActionButton 并稍后在 Shiny 中引入用户输入后,ActionButton 无法正常工作

转载 作者:行者123 更新时间:2023-12-05 02:33:43 25 4
gpt4 key购买 nike

我创建了一个应用程序,它可以让您绘制绘图。为了显示它,您需要单击一个actionButton。这个想法是,您在图中所做的每项更改都会在您单击按钮后更改。

但是,如果用户选择该选项,我添加了一个 numericInput 来更改 y 轴,但现在绘图会自动更新并且它不依赖于 actionButton。我怎样才能避免这种情况?

这是一个可重现的例子:

library(shiny)
library(ggplot2)
library(dplyr)

dt <- data.frame(x=runif(1000), y=runif(1000))

ui <- fluidPage(
checkboxInput("change_Axis", "Change y_axis"),
conditionalPanel(
condition="input.change_Axis",
numericInput("change_y_axis", label=NULL, value=1, min=1)
),
actionButton("draw","plot"),

plotOutput("rys")
)


server <- function(input,output){

pp <- reactive({
plot <- ggplot(dt, aes(x,y)) +
geom_point()

if(input$change_Axis){
plot <- plot + scale_y_continuous(limits = function(x){
c(min(x), input$change_y_axis)
})
}
return(plot)
}) %>% bindEvent(input$draw)


output$rys <- renderPlot({
pp()
})
}

shinyApp(ui=ui, server=server)

在应用程序中,当您第一次点击按钮时,您会看到情节。当您第一次选择改变轴时,它不会自动改变。您必须单击 actionButton。但是,如果您想再次更改轴(第二次),绘图会自动更改。再次更改以此类推。

我想避免在用户更改 y 轴后自动更改绘图。我想通过 actionButton 来控制它。

谁能帮帮我,好吗?

提前致谢

最佳答案

另一种选择是将 renderPlot 绑定(bind)到 input$draw:

library(shiny)
library(ggplot2)
library(dplyr)

dt <- data.frame(x=runif(1000), y=runif(1000))

ui <- fluidPage(
checkboxInput("change_Axis", "Change y_axis"),
conditionalPanel(
condition="input.change_Axis",
numericInput("change_y_axis", label=NULL, value=1, min=1)
),
actionButton("draw","plot"),

plotOutput("rys")
)

server <- function(input,output){
pp <- reactive({
plot <- ggplot(dt, aes(x,y)) +
geom_point()

if(input$change_Axis){
plot <- plot + scale_y_continuous(limits = function(x){
c(min(x), input$change_y_axis)
})
}
return(plot)
})

output$rys <- renderPlot({
pp()
}) %>%
bindEvent(input$draw)
}

shinyApp(ui=ui, server=server)

enter image description here

关于r - 单击 ActionButton 并稍后在 Shiny 中引入用户输入后,ActionButton 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70893283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com