У меня есть график с дневными значениями месяца октября.Две кнопки: неделя и месяц.Недельная сюжетная полоса должна совпадать с месячной сюжетной полосой: первые 2 дня имеют зеленый цвет, следующие 5 дней - синие в месячной полосе.При выборе недели диапазон дат 1-7 должен быть одинакового цвета: зеленый и синий.
Highcharts.chart('container', {
chart: {
type: 'column',
},
title: {
text: 'How long time a TR has been placed in stages longer than 48 hours'
},
legend: {
enabled: true
},
subtitle: {
text: 'Input - verify should max be 48 hours = green zone'
},
data: {
csv: document.getElementById('csv').innerHTML
},
plotOptions: {
column: {
},
series: {
dataLabels: {
enabled: false,
format: '{point.y}'
}
}
},
tooltip: {
},
rangeSelector: {
buttonSpacing: 10,
enabled: true,
inputEnabled: false,
selected: 1,
buttons: [{
type: 'week',
count: 1,
text: 'Week'
}, {
type: 'month',
count: 1,
text: 'Month'
}],
},
xAxis: [{
id: 'one',
type: 'datetime',
dateTimeLabelFormats: {
millisecond: '%H:%M:%S.%L',
second: '%H:%M:%S',
minute: '%H:%M',
hour: '%H:%M',
day: '%e. %b',
week: '%e. %b',
month: '%b \'%y',
year: '%Y'
},
plotBands: [{
from: 1538352000000,
to: 1538524800000,
color: '#E8F5E9'
}, {
from: 1538524800000,
to: 1538870400000,
color: '#E0ECEC'
}, {
from: 1538870400000,
to: 1539475200000,
color: "#FFFDE7"
}, {
from: 1539475200000,
to: 1540944000000,
color: "#FFEBEE"
}],
}, {
id: 'two',
type: 'datetime',
dateTimeLabelFormats: {
millisecond: '%H:%M:%S.%L',
second: '%H:%M:%S',
minute: '%H:%M',
hour: '%H:%M',
day: '%e. %b',
week: '%e. %b',
month: '%b \'%y',
year: '%Y'
},
plotBands: [{
from: 1538352000000,
to: 1538524800000,
color: '#E8F5E9'
}, {
from: 1538524800000,
to: 1538870400000,
color: '#E0ECEC'
}],
}],
yAxis: {
min: 0,
max: 100,
title: {
text: 'TRADING RECORDS',
}
}
});
См. jsfiddle
Существует ли способ переключения между двумяxaxis с разными plotBands: при нажатии на кнопку «неделя» отображается одна полоса, а при нажатии на кнопку «месяц» - другая полоса.То есть цвета сюжетной полосы относятся к датам?Я предполагаю, что должен использовать функции событий, такие как setExtremes и afterSetExtremes, но не знаете, как это сделать?Большое спасибо за помощь.
Мне удалось смоделировать вывод с помощью этой функции:
events: {
afterSetExtremes: function (e) {
if (e.trigger == "rangeSelectorButton" &&
e.rangeSelectorButton.text == "Week") {
// it is your button that caused this,
// so setExtrememes to your custom
// have to do in timeout to let
// highcharts finish processing events...
setTimeout(function () {
Highcharts.charts[0].xAxis[0].setExtremes(1538352000000, 1538524800000)
}, 1);
}
},
}
Но это работает только при выборе конкретного: setExtremes (1538352000000, 1538524800000) Я думаю, что для масштабируемого решения на любые 7 дней потребуетсякакая-то функциональность исключений для удаления текущего диапазона на xaxis с addplotband
Обновлено fiddle