呈现数据透视表结果时出错

时间:2015-11-13 14:06:43

标签: r shiny pivot-table rcharts

我尝试用

创建闪亮的应用程序

rpivotTablenvd3 rcharts

一切正常,但是当我试图从枢轴显示任何图表时 我收到错误

  

An error occurred rendering the PivotTable results.

但是如果我只使用rpivotTable图表在枢轴中工作,我认为在一个闪亮的应用中使用rpivotTablenvd3 rcharts时会出现问题。

实施例

UI

library(shiny)
library(rCharts)
library(rpivotTable)
shinyUI(fluidPage(
  showOutput('plot1',lib = "nvd3"),
  rpivotTableOutput('pivot1', width = "100%", height = "500px"))  
)

服务器

library(shiny)
library(rCharts)
library(rpivotTable)

df=data.frame(A=c(1:10),B=c(-10:-1),C=c("x",rep(c("x","y","z"),3)))
shinyServer(function(input, output, session) {
  output$pivot1 <- renderRpivotTable({
    rpivotTable(data =df ,
                width="100%", height="500px")
  })

  output$plot1=renderChart2({
    myform <- as.formula(paste('A','~','B'))

    n2 <- nPlot(myform,  group ="C", data = df, type = 'multiBarChart')
    n2$chart(margin = list(left = 100))
    n2$chart(reduceXTicks = F)
    n2$set(width = 800, height = 500) 

    print(n2)
  })
  })

给我enter image description here

如果我在枢轴工作中仅使用rpivotTable图表 enter image description here

当我看到检查时,我看到了

TypeError: a.axisTimeFormat.multi is not a function
    at e.i.initParams (c3.min.js:1)
    at e.i.init (c3.min.js:1)
    at new d (c3.min.js:1)
    at Object.k.generate (c3.min.js:1)
    at Object.renderer (c3_renderers.coffee:129)
    at t.fn.pivot (pivot.coffee:546)
    at pivot.coffee:835

有办法解决吗?

包装版本:

rpivotTable_0.1.5.7                    
rCharts_0.4.2    
shiny_0.12.2.9005 

谢谢!

1 个答案:

答案 0 :(得分:3)

正如评论中所指出的,这是由于n3库的双重加载。要避免此问题(这不仅仅是修复),您可以在rcharts中绘制iframe框,以避免jscss问题。

为此,您可以使用uiOutput / renderUI作为闪亮部分,show输出rCharts

以下是一个例子:

library(shiny)
library(rCharts)
library(rpivotTable)

df=data.frame(A=c(1:10),B=c(-10:-1),C=c("x",rep(c("x","y","z"),3)))

ui <-shinyUI(fluidPage(
        uiOutput('plot1'),
        rpivotTableOutput('pivot1')  
))


server <- shinyServer(function(input, output, session) {
        output$pivot1 <- renderRpivotTable({
                rpivotTable(data =df)
        })

        output$plot1=renderUI({
                myform <- as.formula(paste('A','~','B'))
                n2 <- nPlot(myform,  group ="C", data = df, type = 'multiBarChart')
                n2$chart(margin = list(left = 100))
                n2$chart(reduceXTicks = F)
                HTML(paste(capture.output(n2$show('iframesrc', cdn = TRUE)), collapse = '\n'))

        })
})

shinyApp(ui,server)