rChart opens new window in shiny application
Asked Answered
S

2

6

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      
Singularity answered 28/10, 2013 at 12:21 Comment(0)
S
7

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)
    })
  }
))
Selfgovernment answered 29/10, 2013 at 2:26 Comment(0)
A
8

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

Angelikaangelina answered 29/10, 2013 at 2:38 Comment(0)
S
7

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)
    })
  }
))
Selfgovernment answered 29/10, 2013 at 2:26 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.