Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rChart opens new window in shiny application

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      
like image 348
jeroen81 Avatar asked Oct 28 '13 12:10

jeroen81


People also ask

What does fluidRow do shiny?

To create rows within the grid you use the fluidRow() function; to create columns within rows you use the column() function.

What are the main 2 parts of an R shiny app?

A Shiny app consists of two parts, a user interface ( ui ) and an R session that runs code and returns results ( server ). These two parts can be in their own files called ui. R and server. R, or they can be combined into a single file called app.


2 Answers

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)
    })
  }
))
like image 24
Ramnath Avatar answered Sep 29 '22 13:09

Ramnath


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

like image 193
B.Mr.W. Avatar answered Sep 29 '22 13:09

B.Mr.W.