我有一个像以下一样闪亮的应用程序:
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
我想压制这个警告,因为它不必要地混乱我的日志(是的,我知道如何通过修复问题来实际摆脱这个警告。但这只是为了说明目的。在我的实际闪亮的应用程序中有没有摆脱警告)。
将plott
中的renderPlotly()
中的最终suppressWarnings()
包裹在plott
中不起作用。将suppressWarnings(print(plott))
更改为var tempBuffer:[CChar]?
可以工作,但也可以在UI上下文之外打印图表。这可以干净利落吗?
答案 0 :(得分:3)
在下面的示例中,我禁止警告(全局),然后恢复它们,但在绘图完成后,使用shinyjs :: delay。有点hacky,但警告被抑制。
作为替代方案,您可以执行options(warn = -1)
并手动恢复警告。
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)