我希望通过使用Shinyjs()自动隐藏绘图,而不必使用actionButton。这可能吗?
这是我在ui.R中的代码:
tabPanel(title = "Plot", useShinyjs(),
sidebarPanel(width = 4,
h2("Plotting"),
radioButtons(inputId = "type",
label = "Type of Plot:",
choices = c("Scatter Plot",
"Pie Chart", "Bar Chart"),
selected = "Scatter Plot"),
),
mainPanel(width = 8,
br(), br(),
div(id='showplot', plotlyOutput(outputId = "plot")),
div(id='showplot2', plotOutput(outputId = "plot2")),
br(),
h5(textOutput("description"))
)
)
这是我在服务器中的代码。R:
output$plot <- renderPlotly({
if (input$type == "Scatter Plot") {
show("showplot")
} else {
hide("showplot")
}
ggplotly({
p <- ggplot(data = variable_source(), aes_string(x = input$x, y = input$y)) +
geom_point(size = input$size, col = input$color) +
labs(x = x(),
y = y(),
color = toTitleCase(str_replace_all(input$z, "_", " ")),
title = toTitleCase(input$plot_title)
if (input$fit == TRUE) {
p <- p + geom_smooth(method = "lm")
}
p
})
})
output$plot2 <- renderPlot({
if (input$type == "Pie Chart") {
show("showplot2")
} else {
hide("showplot2")
}
ggplot(shortlistpied(), aes_string(x = factor(1), y = "Percentage", fill = input$y)) +
geom_bar(stat = "identity", width = 1) +
geom_text(aes(x = factor(1), y = label_pos, label = perc_text), size = 4) +
scale_fill_distiller(palette = "Oranges") +
coord_polar("y") +
facet_wrap( ~get(input$x)) +
theme_void()
})
编辑:这是我最初运行应用程序时看到的内容:scatter plot original,这一切都很好。但是,当我单击饼形图时,会看到以下内容:pie chart disappears。图表应在以下位置消失:pie chart original。另外,当我再次单击散点图时,它也像这样消失:scatter plot disappears。这可以解决吗?
基本上,我要做的是使主面板在用户单击散点图时显示散点图,而在用户单击饼图时显示饼图。我尝试使用NULL,但参考本帖子R Shiny: How not to display plot when NULL,它会产生不舒服的空白,我希望能够避免这种情况。
非常感谢!