如果在R studio中运行此代码,您会发现NULL数据的图仍然是一个巨大的白色块。
当数据为NULL时,我们怎么能不显示它。
在其他图表中,大白板看起来不那么好。
library(shiny)
server <- function(input, output) {
output$x = renderPlot(NULL)
}
ui <- fluidPage(
br(),
plotOutput("x"),
tags$head(tags$style(HTML("
body {
margin: 0;
font-family: helvetica, sans-serif;
background: #F2F0F0;
}
.shiny-plot-output{
max-width: 100%;
box-shadow: 0px 0px 6px #888;
margin-left: auto;
margin-right: auto;
}
")))
)
shinyApp(ui = ui, server = server)
答案 0 :(得分:4)
我找到了另一种解决方案(因为上面的解决方案对我不起作用)。它使用shinyjs
包。这是一个可重复性最小的例子。
library(shinyjs)
library(shinythemes)
shinyApp(
ui = fluidPage(theme = shinytheme("darkly"),
useShinyjs(), # IMPORTANT, you have to call this function in your UI to use shinyjs
numericInput("num","Number", 5),
plotOutput("text1")
),
server = function(input, output) {
output$text1 <- renderPlot({
if (input$num < 5) {
hide("text1")
} else {
show("text1")
}
plot(rnorm(input$num))
})
}
)
仅在x> 0时显示图表。 5.否则,情节(以及在闪亮主题中使用darkly
主题突出显示的空白 - 不存在)
答案 1 :(得分:2)
你可以在server.R中执行类似的操作:
if(is.null(df)){}
else{
output$x = renderPlot(df)
}
这将检查您发送到renderPlot
的数据是否为NULL,如果数据存在则仅执行renderPlot
。这可能会使画布不显示为白色,而是灰色背景。唯一的问题是,当你出现阴影效果时,它也会出现在灰色上。