Question

I am trying to plot a rChart in a shiny application and run this via Rstudio server. When I run the app the shiny page gives the error: attempt to apply non-function and the RChart opens in a new browser window.

How can make the rChart appear in the shiny application?

server.R

library(shiny)
require(rCharts)

names(iris) = gsub("\\.", "", names(iris))

shinyServer(function(input, output) {

output$myChart  <- renderChart({
h1 <- hPlot(x = "Wr.Hnd", y = "NW.Hnd", data = MASS::survey, 
type = c("line", "bubble", "scatter"), group = "Clap", size = "Age")
return(h1$show(cdn = TRUE))
  })
})

ui.R

library(shiny)
require(rCharts)
shinyUI(pageWithSidebar(

headerPanel("rCharts and shiny"),

sidebarPanel(),

mainPanel(
showOutput("myChart")
  )
))

My R session info

R version 3.0.2 (2013-09-25)
Platform: x86_64-pc-linux-gnu (64-bit)

other attached packages:
[1] shiny_0.7.0     plyr_1.8        rCharts_0.3.51  devtools_1.3    ggplot2_0.9.3.1    RMySQL_0.9-3    DBI_0.2-7      
Was it helpful?

Solution 2

You are missing the name of the library in showOutput. If you install the dev branch of rCharts, then you can run the following code

library(shiny)
# devtools::install_github("rCharts", "ramnathv", ref = "dev")
library(rCharts)
runApp(list(
  ui = pageWithSidebar(
    headerPanel("rCharts and shiny"),
    sidebarPanel(

    ),
    mainPanel(
      showOutput("myChart", "highcharts")
  )),
  server = function(input, output, session){
    output$myChart  <- renderChart2({
      h1 <- hPlot(x = "Wr.Hnd", y = "NW.Hnd", data = MASS::survey, 
        type = c("line", "bubble", "scatter"), group = "Clap", 
        size = "Age"
      )
      return(h1)
    })
  }
))

OTHER TIPS

You have to specify which library need to import depending on which kind of plot you are using.

Here is a list of all the available libraries from the description of rCharts package.

datatables
dimple
highcharts
leaflet
morris
nvd3
polycharts
rickshaw
vega
xcharts

Here is the demo code on rcharts website and I modified it to plot hplot.

ui.R

require(rCharts)
shinyUI(pageWithSidebar(
  headerPanel("rCharts: Interactive Charts from R using highcharts"),

  sidebarPanel(
    selectInput(inputId = "x",
                label = "Choose X",
                choices = c('SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'),
                selected = "SepalLength"),
    selectInput(inputId = "y",
                label = "Choose Y",
                choices = c('SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'),
                selected = "SepalWidth")
  ),
  mainPanel(
    showOutput("myChart", "highcharts")
  )
))

server.R

require(rCharts)
shinyServer(function(input, output) {
  output$myChart <- renderChart({
    names(iris) = gsub("\\.", "", names(iris))
    # HPLOT
    p1 <- hPlot(input$x, input$y, data = iris, type = c("line", "bubble", "scatter"), group = "Species", size = 1)
    # RPLOT
    #p1 <- rPlot(input$x, input$y, data = iris, color = "Species", facet = "Species", type = 'point')
    p1$addParams(dom = 'myChart')
    return(p1)
  })
})

enter image description here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top