Мне нужно создать развертку по типу столбца, показанному ниже. Это то, что я сделал до сих пор. Я могу создать простой график, но не знаю, как реализовать раскрывающуюся функциональность. Любая помощь по этому поводу будет оценена по достоинству.Развертка на столбце с использованием Highcharts
Обращаем ваше внимание, что данные примера взяты из сценария python.
function create_graph() {
var maingraph = {{ maingraph|safe }}
chart = new Highcharts.Chart ({
chart: {
height: 600,
width: 1200,
renderTo: container1,
type: 'column'
//reflow: false
},
title: {
text: maingraph[0].graphTitle
},
xAxis: {
categories: maingraph[0].xAxisLabels
},
yAxis: {
min: 0,
title: {
text: maingraph[0].yAxisTitle
}
},
tooltip: {
headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y}</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
},
plotOptions: {
column: {
pointPadding: 0.2,
borderWidth: 0
}
},
series: generateMainData({{ maingraph|safe }}),
<!--drilldown: {
<!--series: generateChildData({{ childgraph|safe }})
<!--}
});
}
function generateMainData(g) {
return [{ name: 'Males',
data: g[0].yAxisValues
<!--drilldown: what to write here?
}, {
name: 'Females',
data: g[1].yAxisValues }];
<!--drilldown: what to write here?
}
if ({{ maingraph|safe }}) {
create_graph();
}
</script>
maingraph = [{'xAxisLabels': ['Trait1', 'Trait2'], 'yAxisTitle': 'yTitle', 'graphTitle': 'Title', 'xAxisTitle': 'Traits', 'yAxisValues': [0.41, 0.71]}, {'xAxisLabels': ['Trait1', 'Trait2'], 'yAxisTitle': 'yTitle', 'graphTitle': 'Title', 'xAxisTitle': 'Traits', 'yAxisValues': [0.28, 0.27]}]
childgraph = [{'Trait1': {'xAxisLabels': ['Facet1', 'Facet2'], 'yAxisTitle': 'yTitle', 'graphTitle': 'Title', 'xAxisTitle': 'Facets', 'yAxisValues': [0.19, 0.17]}, 'Trait2': {'xAxisLabels': ['Facet3', 'Facet4'], 'yAxisTitle': 'yTitle', 'graphTitle': 'Facets', 'xAxisTitle': 'Facets', 'yAxisValues': [0.96, 0.22]}}, {'Trait1': {'xAxisLabels': ['Facet1', 'Facet2'], 'yAxisTitle': 'yTitle', 'graphTitle': 'Facets', 'xAxisTitle': 'Facets', 'yAxisValues': [0.33, 0.34]}, 'Trait2': {'xAxisLabels': ['Facet3', 'Facet4'], 'yAxisTitle': 'yTitle', 'graphTitle': 'Facets', 'xAxisTitle': 'Facets', 'yAxisValues': [0.12, 0.42]}}]
То, что я хочу, что, когда я нажимаю на колонке Trait1 в главном графике, я должен получить две колонки Facet1 и Facet2. Трудность заключается в том, как заставить сценарий различать столбец для мужчин и женщин по одному и тому же признаку.
Этот образец дает вам представление о том, как обрабатывать развертку, если вы хотите загрузить некоторые данные через ajax: http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/drilldown/async/ – user2345998
Что вы подразумеваете под ajax? Я могу выполнить развертку без каких-либо вызовов ajax. Я устанавливаю данные в переменных js, когда страница загружается, а затем использует эти данные для генерации графиков. Существует не ajax-вызов –
Ох..в скрипке используется ajax. Но все же, если вы сначала загрузите все свои данные, вы можете использовать их в генерации графиков. Пожалуйста, см. Образец кода, который я предоставил в ответ –