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
To create rows within the grid you use the fluidRow() function; to create columns within rows you use the column() function.
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.
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)
})
}
))
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)
})
})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With