Отключить Нет данных для отображения сообщения - PullRequest
0 голосов
/ 23 октября 2018

У меня есть диаграмма в Shiny, сгенерированная с помощью пакета HighCharter.Я хотел бы прекратить сообщение «Нет данных для отображения», которое отображается, когда серия для печати пуста.В моем случае фактическое содержание графика отображается как 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 голосов
/ 23 октября 2018

Ваш вопрос не имеет воспроизводимого примера, но, насколько я понимаю, вы хотите запретить построение графика, когда нет данных?

Я бы посоветовал изучить req()
https://shiny.rstudio.com/articles/req.html

Если вы хотите, чтобы график строился только тогда, когда, скажем, data доступен, выполните:

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

req не только остановит график, когда данные NULLили FALSE, но также когда пользователь не выбрал данные

...