我正在尝试使用页面上的滑块动态更新我的 HighchartsplotBands。我希望
to
和 from
都附加到滑块值,并在用户拖动滑块时在画布上动态更新。这可能吗?
HTML:
<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="container"></div>
<!-- <input id="range" type="range" /> -->
<div id="slider">
<input class="bar" type="range" id="range-input" min="1" max="25" value="1"/>
<span class="highlight"></span>
<output id="range-value">1</output>
</div>
JS:
var rangeInput = document.getElementById("range-input")
var rangeValue = document.getElementById("range-value")
rangeInput.oninput = rangeOutput
function rangeOutput() {
rangeValue.innerText = rangeInput.value
}
let bla = rangeInput.value;
Highcharts.chart('container', {
chart: {
marginTop: 5
},
title: {
text: 'Flats sold per month'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
yAxis: {
plotBands: [{
from: bla,
to: 5,
color: 'yellow'
}],
title: {
text: 'Flats'
}
},
series: [{
data: [1, 3, 5, 2, 3, 9, 6, 7, 3, 5, 4, 3]
}]
});
我遇到的问题是实时更新图表。如果我想更新数据,我可以看到有一些方法可以做到这一点,但我不确定如何为plotBands 做到这一点。
我们可以使用chart.update。
首先,我们将您的图表设置为
chart
。
const chart = Highcharts.chart(/** **/);
而且,现在我们在
chart.update
函数中使用 rangeOutput
。
chart.update({
yAxis: {
plotBands: [
{
from: rangeInput.value,
to: 5,
color: "yellow",
},
],
title: {
text: "Flats",
},
},
});
这是最终代码的CodePen。