禁用无数据显示消息

时间:2018-10-23 14:22:21

标签: r shiny r-highcharter

我有一个由HighCharter软件包生成的Shiny图表。我要取消显示“无数据显示”消息,该消息在要绘制的系列为空时显示。在我的情况下,图表的实际内容显示为plotLines(下面的变量age)。但是,为了使HighCharter显示plotLines,它需要数据。这就是为什么要添加行(删除该行以了解我的意思)的原因:

%>% hc_series(list(data=c(), visible=FALSE, id="dummy"))

可以做到吗?

这里是一个使用reprex(venue="r")的示例:我希望显示背景渐变和plotLines,但是应该隐藏“无数据可显示”消息。

library(shiny)
library(highcharter)
#> Highcharts (www.highcharts.com) is a Highsoft software product which is
#> not free for commercial and Governmental use

# layout
ui <-   fluidPage(highchartOutput("highchart_slider", height = "200px"))

server <- function(input, output) { 
  # This value comes from the backend and is variable. It is in [-100, 100]
  age <- 20

  output$highchart_slider <- renderHighchart({
    hcSlider <- highchart() %>%
      hc_chart(renderTo= "container", 
               defaultSeriesType = 'bar', 
               plotBackgroundColor=list(
                 linearGradient = list(x1=0, x2=1, y1=0, y2=0), 
                 stops=list(list(0, '#bf0000'),list(0.45, '#e1e218'), 
                            list(0.55, '#e1e218'),list(1, 'darkgreen')))) %>%
      hc_yAxis(tickInterval=100, min=-100, max=100,
               plotLines=list(list(
                 label = list(text = "title", align = 'center', verticalAlign = 'top'),  
                 color = "black", width = 4, value = age, y = -2))
      ) %>%
      hc_series(list(data=c(), visible=FALSE, id="dummy"))
    # display plot
    hcSlider
  })
  }

# start the app
shinyApp(ui = ui, server = server)

#' <!--html_preserve-->

#' Shiny applications not supported in static R Markdown documents

#' <!--/html_preserve-->

1 个答案:

答案 0 :(得分:0)

您的问题没有可重复的示例,但是据我了解,您希望在没有可用数据的时候阻止绘制图表?

我建议您调查req()
https://shiny.rstudio.com/articles/req.html

如果您希望仅在假设data可用时才绘制图, 做

output$plot <- renderPlot({
  req(data)
  ...
})

req不仅会在数据为NULLFALSE时停止绘图,而且还会在用户没有选择数据的情况下停止