lineas - rGráficos con Highcharts como aplicación brillante
highcharts statistics (2)
Tengo una aplicación brillante que consta de tres archivos. server.R, ui.R y el archivo para iniciar la aplicación con
require(shiny)
require(rCharts)
runApp("shinyApp")
La aplicación comienza, pero la trama no es visible. Funciona con una trama r normal y con poligrafías, pero después de intentar mucho, todavía no tengo éxito con rCharts (que incluye rHighcharts).
Estos son los archivos del último intento:
servidor.R:
library(rCharts)
shinyServer(function(input, output) {
output$myChart <- renderChart({
h1 <- Highcharts$new()
h1$chart(type = "spline")
h1$series(data = c(1, 3, 2, 4, 5), dashStyle = "longdash")
h1$series(data = c(NA, 4, 1, 3, 4), dashStyle = "shortdot")
h1$legend(symbolWidth = 80)
return(h1)
})
})
ui.R:
require(rCharts)
shinyUI(pageWithSidebar(
headerPanel("rCharts: Highcharts"),
sidebarPanel(
selectInput(inputId = "x",
label = "Choose X",
choices = c(''SepalLength'', ''SepalWidth'', ''PetalLength'', ''PetalWidth''),
selected = "SepalLength")
),
mainPanel(showOutput("myChart", "Highcharts")
)
))
Mi suposición es que el segundo argumento de "showOutput" podría estar equivocado, pero no encontré nada.
Hay dos formas de hacer que esto funcione. La primera forma es agregar h1$set(dom = "myChart")
en su server.R
. Esto es necesario para que tanto server.R
como ui.R
se comuniquen acerca del gráfico correcto. La alternativa es usar renderChart2
, que está en la rama dev
de rCharts
, que es una versión actualizada de renderChart
y eventualmente lo reemplazará. Adjunto el código completo para el beneficio de todos.
require(rCharts)
require(shiny)
runApp(list(
ui = pageWithSidebar(
headerPanel("rCharts: Highcharts"),
sidebarPanel(selectInput(
inputId = "x",
label = "Choose X",
choices = c(''SepalLength'', ''SepalWidth'', ''PetalLength'', ''PetalWidth''),
selected = "SepalLength"
)),
mainPanel(showOutput("myChart", "Highcharts"))
),
server = function(input, output){
output$myChart <- renderChart2({
h1 <- Highcharts$new()
h1$chart(type = "spline")
h1$series(data = c(1, 3, 2, 4, 5), dashStyle = "longdash")
h1$series(data = c(NA, 4, 1, 3, 4), dashStyle = "shortdot")
h1$legend(symbolWidth = 80)
return(h1)
})
}
))
Probablemente esto se deba al hecho de que rcharts
está basado en javascript
rcharts
existen fuertes incompatibilidades entre los nombres de las variables R
y los nombres de las variables permitidas por javascript
. Específicamente con respecto a los puntos .
en nombres
Intente ejecutar la siguiente función en los nombres de data.frame
y cualquier columna de character
:
noDot <- function(x)
gsub("//.", "_", gsub("^//.", "", x) )
es decir:
names(df) <- noDot(names(df))
# and
char.cols <- sapply(df, function(x) any(is(x)=="character"))
df[, char.cols] <- sapply(df[, char.cols], noDot)
# note that this has not been tested