【问题标题】:Highchart not rendering in Shiny but rendering in interactive modeHighchart 不以 Shiny 呈现,但以交互模式呈现
【发布时间】:2019-03-21 19:54:16
【问题描述】:

我正在尝试运行以下闪亮的应用程序,它由两个 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)

当我运行这个应用程序时,highchart 没有呈现。以下是我得到的输出:

如果我通过控制台以交互方式运行类似的 highchart,highchart 会在 Viewer 选项卡中正确呈现:

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
    )
  )

这里是输出:

Shiny 应用程序哪里出错了?

【问题讨论】:

    标签: r shiny r-highcharter


    【解决方案1】:

    reactives 是函数,应该在末尾用括号调用 ()

    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()
            )
          )
      })
    

    【讨论】:

    • 完成!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    相关资源
    最近更新 更多