【发布时间】:2022-02-04 12:48:20
【问题描述】:
我一点也不精通 JS,所以请原谅我在下面这个简单的闪亮应用示例中的薄弱努力。我只是想在子行中呈现一个简单的 highcharts 图,只是为了确定这是否可以做到。
该示例在 DevTools 控制台中给出了这个错误: "未捕获的错误:Highcharts 错误 #13:www.highcharts.com/errors/13/"
如果有人可以就此示例提出建议或指出更有效的替代方案,将不胜感激(例如,能够使用 ggplot 代替仍然很棒)。
library(DT)
library(shiny)
ui <-shinyUI(fluidPage(
tags$head(tags$script(src="https://code.highcharts.com/highcharts.js")),
tags$body(
HTML("<script type='text/javascript'>document.addEventListener('DOMContentLoaded', function () {
const chart = Highcharts.chart('container', {
chart: {
type: 'bar'
},
title: {
text: 'Fruit Consumption'
},
xAxis: {
categories: ['Apples', 'Bananas', 'Oranges']
},
yAxis: {
title: {
text: 'Fruit eaten'
}
},
series: [{
name: 'Jane',
data: [1, 0, 4]
}, {
name: 'John',
data: [5, 7, 3]
}]
});
});
</script>")),
DTOutput("tab")))
server <- shinyServer(function(input, output, session) {
output$tab <- renderDT({datatable(
cbind(' ' = '⊕', mtcars), escape = FALSE,
options = list(
columnDefs = list(
list(visible = FALSE, targets = c(0, 2, 3)),
list(orderable = FALSE, className = 'details-control', targets = 1)
)
),
callback = JS("
table.column(1).nodes().to$().css({cursor: 'pointer'});
table.on('click', 'td.details-control', function() {
var td = $(this), row = table.row(td.closest('tr'));
if (row.child.isShown()) {
row.child.hide();
td.html('⊕');
} else {
row.child('<div id=\"container\" style=\"width:100%;height:600px;\"></div>').show();
td.html('⊖');
}
});"
))
})
})
shiny::shinyApp(ui,server)
【问题讨论】:
标签: javascript shiny highcharts parent-child