Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何抑制ShinyApp中的所有Plotly警告_R_Shiny_Plotly_R Plotly - Fatal编程技术网

R 如何抑制ShinyApp中的所有Plotly警告

R 如何抑制ShinyApp中的所有Plotly警告,r,shiny,plotly,r-plotly,R,Shiny,Plotly,R Plotly,我在ShinyApp中有一个plotly函数,它可以根据用户输入绘制不同的图(直线图、箱线图、violinplots) 由于不同的跟踪采用不同的参数并需要不同的布局,因此我看到了很多警告,我想抑制这些警告。在这种情况下,这没有帮助 似乎在RStudio中工作,但在Shinyapp中不工作,它会将绘图打印到浏览器和RStudio 所描述的解决方法是可行的,但感觉像是黑客攻击,我在这个应用程序中不使用shinyjs 还有其他想法吗?我如何才能仅抑制有预谋的消息/警告 library(shiny) l

我在ShinyApp中有一个plotly函数,它可以根据用户输入绘制不同的图(直线图、箱线图、violinplots)

由于不同的跟踪采用不同的参数并需要不同的布局,因此我看到了很多警告,我想抑制这些警告。在这种情况下,这没有帮助

似乎在RStudio中工作,但在Shinyapp中不工作,它会将绘图打印到浏览器和RStudio

所描述的解决方法是可行的,但感觉像是黑客攻击,我在这个应用程序中不使用
shinyjs

还有其他想法吗?我如何才能仅抑制有预谋的消息/警告

library(shiny)
library(plotly)

suppressPlotlyMessage <- function(p) {
  invisible(suppressMessages(suppressWarnings(print(plotly::plotly_build(p)))))
}

plotly_function <- function(df, type, mode, boxpoints) {
  p <- plot_ly(text = "text") %>%
    add_trace(data = df,
              x = ~timestamp, y = ~value,
              name = ~names, color = ~I(color),
              type = type, mode = mode,
              notched = TRUE, jitter = 0.3, boxpoints = boxpoints) %>%
    plotly::layout(barmode = 'group',
                   boxmode = 'group', boxgroupgap=0.4, violinmode  = 'group', violingroupgap =0.4,
                   showlegend = TRUE)
  # suppressPlotlyMessage(p)
  p
}

## UI ##################
ui <- fluidPage(
  checkboxInput("boxplots", "Show Plot as Boxplots"),
  conditionalPanel("input.boxplots == true",
    checkboxInput("showall", "Show all Points"),
    checkboxInput("violins", "Show Plot as Violinplots")
  ),
  actionButton("makewarning", "Create a Warning"),
  plotlyOutput("plot")
)

## SERVER ##################
server <- function(input, output, session) {
  observeEvent(input$makewarning, {
    warning("This warning should be visible")
  })
  output$plot <- renderPlotly({
    df <- data.frame(timestamp = rep(seq.POSIXt(Sys.time(), Sys.time()-1000000, length.out = 50), 2),
                     value = sin(1:50)*runif(100, 0, 50),
                     names = c(rep("name1",50), rep("name2",50)),
                     color = c(rep("#ff8300",50), rep("#5ddd40",50)))
    
    type = "scattergl"; mode = "markers+lines"
    boxpoints <- NULL
    if (input$boxplots == TRUE) {
      df$timestamp <- as.Date(df$timestamp)
      mode = NULL
      if (input$violins == TRUE) {
        type = "violin"
      } else {
        type = "box"
      }
    }
    if (input$showall) {
      boxpoints <- "all"
    }
    
    # browser()
    # plotly_function(df, type, mode, boxpoints)
    # suppressWarnings(plotly_function(df, type, mode, boxpoints))
    suppressWarnings(print(plotly_function(df, type, mode, boxpoints)))
    # suppressPlotlyMessage(plotly_function(df, type, mode, boxpoints))
    
  })
}

shinyApp(ui, server)
库(闪亮)
图书馆(绘本)

suppressPlotlyMessage“此评论在这种情况下没有帮助。”-为什么没有?它确实解决了问题。当然,你也可以对
renderpltly
函数本身做同样的操作(注意它的参数是非标准的,所以你需要做同样的操作)。你介意告诉我如何在该应用程序中使用该注释来抑制警告吗?我没能做到……实际上我只是测试了一下,根本不起作用。我现在有点搞不清楚警告是在哪一点产生的。话虽如此,我还是强烈建议您不要忽略这些警告,因为它们是完全合法的—请修改代码。也就是说,改变绘图代码,以便只传递属于给定跟踪类型的选项,而不是所有选项。您当前的代码是黑客和脆弱的,如果这些警告被升级为错误(它们应该已经出现),可能会在plotly的未来版本中崩溃。我不明白为什么必须修复代码,它工作得很好。Plotly应该忽略给定类型不需要的参数。否则,我将不得不为所有不同的配置编写单独的plotly函数调用,这对我来说似乎不太合适。“plotly应该忽略给定类型不需要的参数。”-不。目前它是这样做的,但这纯粹是偶然的:一般来说,R通常不会忽略无效的函数参数。事实上,plotly确实是一个疏忽,而plotly的作者决定在某个时候解决这个问题是完全合理的。-“否则,我将不得不为所有不同的配置编写单独的plotly函数调用”-这不是必需的。您只需交换移动部件(即单个
add_trace
调用,以及可能的布局)。“此注释在这种情况下没有帮助。”-为什么不?它确实解决了问题。当然,你也可以对
renderpltly
函数本身做同样的操作(注意它的参数是非标准的,所以你需要做同样的操作)。你介意告诉我如何在该应用程序中使用该注释来抑制警告吗?我没能做到……实际上我只是测试了一下,根本不起作用。我现在有点搞不清楚警告是在哪一点产生的。话虽如此,我还是强烈建议您不要忽略这些警告,因为它们是完全合法的—请修改代码。也就是说,改变绘图代码,以便只传递属于给定跟踪类型的选项,而不是所有选项。您当前的代码是黑客和脆弱的,如果这些警告被升级为错误(它们应该已经出现),可能会在plotly的未来版本中崩溃。我不明白为什么必须修复代码,它工作得很好。Plotly应该忽略给定类型不需要的参数。否则,我将不得不为所有不同的配置编写单独的plotly函数调用,这对我来说似乎不太合适。“plotly应该忽略给定类型不需要的参数。”-不。目前它是这样做的,但这纯粹是偶然的:一般来说,R通常不会忽略无效的函数参数。事实上,plotly确实是一个疏忽,而plotly的作者决定在某个时候解决这个问题是完全合理的。-“否则,我将不得不为所有不同的配置编写单独的plotly函数调用”-这不是必需的。您只需交换移动部件(即单个
add_trace
调用,以及可能的布局)。