Shiny D3热图和rcharts don';在一个闪亮的应用程序中,不能在不同的选项卡中工作

Shiny D3热图和rcharts don';在一个闪亮的应用程序中,不能在不同的选项卡中工作,shiny,rcharts,Shiny,Rcharts,通过rCharts和d3heatmap库在闪亮应用程序的不同选项卡(或者实际上,闪亮应用程序的同一选项卡)上使用nvd3库制作应用程序时遇到了一些问题 我在这里举了一个小例子来说明这个问题,基本上绘制了树状图,但没有绘制热图。如果你去掉了rCharts标签,尽管它很好用。这两个库之间有什么冲突 我可以解决第一个问题(d3.tip不是函数),注释行以#HTML开头,因此它会绘制彩色框,但您无法与它们交互,并且不会打印行名(错误:无法读取未定义的属性“apply”) 库(D3热图) 图书馆(闪亮)

通过rCharts和d3heatmap库在闪亮应用程序的不同选项卡(或者实际上,闪亮应用程序的同一选项卡)上使用nvd3库制作应用程序时遇到了一些问题

我在这里举了一个小例子来说明这个问题,基本上绘制了树状图,但没有绘制热图。如果你去掉了rCharts标签,尽管它很好用。这两个库之间有什么冲突

我可以解决第一个问题(d3.tip不是函数),注释行以#HTML开头,因此它会绘制彩色框,但您无法与它们交互,并且不会打印行名(错误:无法读取未定义的属性“apply”)

库(D3热图)
图书馆(闪亮)

ui解决方案基于本节中的答案。我认为这与JavaScript的评估有关,JavaScript的评估先于其他评估

rm(list = ls())
library(d3heatmap)
library(shiny)
library(rCharts)

ui <- fluidPage(

  # HTML('<script src="http://labratrevenge.com/d3-tip/javascripts/d3.tip.v0.6.3.js"></script>'),

  sidebarLayout(
    sidebarPanel(
      h1("A heatmap demo")
    ),
    mainPanel(
      tabsetPanel( # set up tabbed output
        tabPanel("First panel", showOutput("barchart", lib =  "nvd3")),
        tabPanel("Second panel",  uiOutput("ui_heatmap"))
      )
    )
  )
)
d3heatmap(mtcars, scale="column", colors="YlOrR")

server <- function(input, output, session) {

  mtcars2 = reactive({
    mtcars
  })

  output$ui_heatmap <- renderUI({
    d3heatmapOutput("heatmap", height = paste0(15*nrow(mtcars2()), "px")) 
  })    
  output$heatmap <- renderD3heatmap({ 
    d3heatmap(mtcars2(), scale = "column") 
  })

  output$barchart <- renderChart({

    hair_eye_male <- subset(as.data.frame(HairEyeColor), Sex == "Male")
    n1 <- nPlot(Freq ~ Hair, group = "Eye", data = hair_eye_male, type = "multiBarChart")
    n1$addParams(dom = 'barchart')
    return(n1)
  })
}
shinyApp(ui, server)
rm(list=ls())
图书馆(热图)
图书馆(闪亮)
图书馆(艺术)

ui事实上,只需设置一个反应式ui。对于未来的访问者,这里是完整的代码

library(d3heatmap)
library(shiny)
library(rCharts)

ui <- fluidPage(

  sidebarLayout(
    sidebarPanel(
      h1("A heatmap demo")
    ),
    mainPanel(
      tabsetPanel( # set up tabbed output
        tabPanel("First panel", showOutput("barchart", lib =  "nvd3")),
        tabPanel("Second panel", uiOutput("ui_heatmap"))
      )
    )
  )
)

server <- function(input, output, session) {

  output$ui_heatmap <- renderUI({
    d3heatmapOutput("heatmap")
  })

  output$heatmap <- renderD3heatmap({ 
    d3heatmap(mtcars, scale = "column") 
  })

  output$barchart <- renderChart({

    hair_eye_male <- subset(as.data.frame(HairEyeColor), Sex == "Male")
    n1 <- nPlot(Freq ~ Hair, group = "Eye", data = hair_eye_male, type = "multiBarChart")
    n1$addParams(dom = 'barchart')

    return(n1)
  })
}
shinyApp(ui, server)
库(D3热图)
图书馆(闪亮)
图书馆(艺术)
用户界面
library(d3heatmap)
library(shiny)
library(rCharts)

ui <- fluidPage(

  sidebarLayout(
    sidebarPanel(
      h1("A heatmap demo")
    ),
    mainPanel(
      tabsetPanel( # set up tabbed output
        tabPanel("First panel", showOutput("barchart", lib =  "nvd3")),
        tabPanel("Second panel", uiOutput("ui_heatmap"))
      )
    )
  )
)

server <- function(input, output, session) {

  output$ui_heatmap <- renderUI({
    d3heatmapOutput("heatmap")
  })

  output$heatmap <- renderD3heatmap({ 
    d3heatmap(mtcars, scale = "column") 
  })

  output$barchart <- renderChart({

    hair_eye_male <- subset(as.data.frame(HairEyeColor), Sex == "Male")
    n1 <- nPlot(Freq ~ Hair, group = "Eye", data = hair_eye_male, type = "multiBarChart")
    n1$addParams(dom = 'barchart')

    return(n1)
  })
}
shinyApp(ui, server)