在闪亮的应用程序中抑制阴谋警告 [英] suppress plotly warnings in shiny app
问题描述
我有一个闪亮的应用,如下所示:
I have a shiny app like the following:
server.R
:
shinyServer(function(input, output) {
output$trendPlot <- renderPlotly({
plot_ly(movies, x = length, y=rating, mode='markers', color=as.factor(year), colors = c("#132B43", "#56B1F7")) -> plott
plott
})
})
ui.R
:
library(shiny)
library(plotly)
library(ggplot2movies) # Needed for the 'movies' data set
shinyUI(fluidPage(
titlePanel("Movie Ratings!"),
mainPanel(
plotlyOutput("trendPlot")
)
))
这会产生一个警告:
Warning in RColorBrewer::brewer.pal(N, "Set2") :
n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors
我想取消此警告,因为它不必要地弄乱了我的日志(是的,我知道如何通过解决问题来实际消除此警告.但这仅用于说明目的.在我实际的闪亮应用程序中,有没有摆脱警告).
I would like to suppress this warning because it's unnecessarily cluttering up my logs (yes, I know how to actually get rid of this warning by fixing the issue. But this is for illustrative purposes only. In my actual shiny app there is no getting rid of the warning).
在 suppressWarnings()
中的 renderPlotly()
中包装最终的 plott
更改为 suppressWarnings(print(plott))
确实 可以工作,但也会在 UI 上下文之外打印绘图.这可以干净地完成吗?
Wrapping the final plott
in renderPlotly()
in suppressWarnings()
does not work. Changing plott
to suppressWarnings(print(plott))
does work but also prints the plot outside of the UI context. Can this be done cleanly?
推荐答案
在下面的示例中,我抑制了警告(全局),然后恢复它们,但是在情节完成后,使用shinyjs::delay.有点hacky,但警告被抑制.作为替代方案,您可以只执行 options(warn = -1)
并手动恢复警告.
In the example below I suppress warnings (globally), and later restore them, but after the plot is completed, using shinyjs::delay. A bit hacky, but warnings are suppressed.
As an alternative, you can just do options(warn = -1)
and restore the warning manually.
library(shiny)
library(plotly)
library(shinyjs)
library(ggplot2movies) # Needed for the 'movies' data set
ui <- shinyUI(fluidPage(
useShinyjs(),
titlePanel("Movie Ratings!"),
mainPanel(
plotlyOutput("trendPlot")
)
))
server <- shinyServer(function(input, output) {
# suppress warnings
storeWarn<- getOption("warn")
options(warn = -1)
output$trendPlot <- renderPlotly({
plot_ly(movies, x = length, y=rating, mode='markers', color=as.factor(year), colors = c("#132B43", "#56B1F7")) -> plott
#restore warnings, delayed so plot is completed
shinyjs::delay(expr =({
options(warn = storeWarn)
}) ,ms = 100)
plott
})
})
shinyApp(ui, server)
这篇关于在闪亮的应用程序中抑制阴谋警告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!