2013-10-01 4 views
11

У меня есть блестящее приложение, состоящее из трех файлов. server.R, ui.R и файл для запуска приложения сrCharts с Highcharts как блестящее приложение

require(shiny) 
require(rCharts) 
runApp("shinyApp") 

запускает приложение, но сюжет не видно. Он работает с обычным r-графиком и с поликартами, но после многих попыток, я все еще не добился успеха в rCharts (включая rHighcharts).

Это файлы последней попытки:

server.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") 
) 
)) 

Мое предположение о том, что второй аргумент "showOutput" может быть неправильно, но я ничего не нашел.

ответ

17

Есть два способа, чтобы получить эту работу. Первый способ - добавить h1$set(dom = "myChart") в ваш server.R. Это необходимо для того, чтобы как server.R, так и ui.R обменивались информацией о правильной диаграмме. Альтернативой является использование renderChart2, который находится в филиале dev от rCharts, то есть обновленной версии renderChart и в конечном итоге заменит ее. Я прилагаю весь код для всех.

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) 
    }) 
    } 
)) 
2

Это, скорее всего, связано с тем, что rcharts является javascript на основе есть сильные несовместимости между R имен переменных и javascript разрешенных имен переменных. В частности, в отношении точек . в именах.

Попробуйте запустить следующую функцию на data.frame имен и любой character колонке:

noDot <- function(x) 
    gsub("\\.", "_", gsub("^\\.", "", x)) 

т.е.

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 
Смежные вопросы