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