Highchart не рендеринг в Shiny, но рендеринг в интерактивном режиме - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь запустить следующее блестящее приложение, которое состоит из двух selectInput и highChartOutput:

library(shiny)
library(shinythemes)
library(purrr)
library(highcharter)

ui <- fluidPage(
  titlePanel(title = "Highcharter"),
  theme = shinytheme("flatly"),
  sidebarLayout(
   sidebarPanel(
      selectInput(inputId = "xvar", label = "Select variable for X axis",
                  choices = names(iris)[-5], multiple = FALSE),
      br(),
      selectInput(inputId = "yvar", label = "Select variable for Y axis",
                  choices = names(iris)[-5], multiple = FALSE)
    ),
   mainPanel(
      highchartOutput(outputId = "hc1")
    )
  )
)

server <- function(input, output) {

  dat_setosa <- eventReactive(c(input$xvar, input$yvar),{
      split(iris[iris$Species == "setosa", c(input$xvar, input$yvar), drop = 
FALSE], seq_len(nrow(iris[iris$Species == "setosa", ]))) %>% 
      map(~as.numeric(.x)) %>% 
      set_names(NULL)
  })

  dat_virginica <- eventReactive(c(input$xvar, input$yvar),{
      split(iris[iris$Species == "virginica", c(input$xvar, input$yvar), 
drop = FALSE], seq_len(nrow(iris[iris$Species == "virginica", ]))) %>% 
      map(~as.numeric(.x)) %>% 
      set_names(NULL)
  })

  dat_versicolor <- eventReactive(c(input$xvar, input$yvar),{
      split(iris[iris$Species == "versicolor", c(input$xvar, input$yvar), 
drop = FALSE], seq_len(nrow(iris[iris$Species == "versicolor", ]))) %>% 
      map(~as.numeric(.x)) %>% 
      set_names(NULL)
  })

  output$hc1 <- renderHighchart({
    highchart() %>% 
      hc_chart(type = "scatter") %>% 
      hc_series(
        list(
          name = "setosa",
          color = "#01B88A",
          data = dat_setosa
        ),
        list(
          name = "viriginica",
          color = "#374649",
          data = dat_virginica
        ),
        list(
          name = "versicolor",
          color = "#FD625E",
          data = dat_versicolor
        )
      )
  })
}

shinyApp(ui = ui, server = server)

Когда я запускаю это приложение, старшая диаграмма не отображается.Ниже приведен вывод, который я получаю: enter image description here

Если я запускаю подобную старшую диаграмму в интерактивном режиме через консоль, верхняя диаграмма правильно отображается на вкладке «Просмотр»:

library(purrr)
library(highcharter)

dat_setosa <- split(iris[iris$Species == "setosa", c("Sepal.Length", 
"Sepal.Length"), drop = FALSE], seq_len(nrow(iris[iris$Species == "setosa", 
]))) %>% 
  map(~as.numeric(.x)) %>% 
  set_names(NULL)

dat_virginica <- split(iris[iris$Species == "virginica", c("Sepal.Length", 
"Sepal.Length"), drop = FALSE], seq_len(nrow(iris[iris$Species == 
"virginica", ]))) %>% 
  map(~as.numeric(.x)) %>% 
  set_names(NULL)

dat_versicolor <- split(iris[iris$Species == "versicolor", c("Sepal.Length", 
"Sepal.Length"), drop = FALSE], seq_len(nrow(iris[iris$Species == 
"versicolor", ]))) %>% 
  map(~as.numeric(.x)) %>% 
  set_names(NULL)

highchart() %>% 
  hc_chart(type = "scatter") %>% 
  hc_series(
    list(
      name = "setosa",
      color = "#01B88A",
      data = dat_setosa
    ),
    list(
      name = "viriginica",
      color = "#374649",
      data = dat_virginica
    ),
    list(
      name = "versicolor",
      color = "#FD625E",
      data = dat_versicolor
    )
  )

Вот выход: enter image description here

Где я ошибаюсь в приложении Shiny?

1 Ответ

1 голос
/ 21 марта 2019

Реактивы являются функциями и должны вызываться в скобках в конце ()

output$hc1 <- renderHighchart({
    highchart() %>% 
      hc_chart(type = "scatter") %>% 
      hc_series(
        list(
          name = "setosa",
          color = "#01B88A",
          data = dat_setosa()
        ),
        list(
          name = "viriginica",
          color = "#374649",
          data = dat_virginica()
        ),
        list(
          name = "versicolor",
          color = "#FD625E",
          data = dat_versicolor()
        )
      )
  })

enter image description here

...