具有实时数据的 Highcharts:在左侧对齐图表
Highcharts with live data: align chart on left side
我正在处理图表和实时数据。我看到了这个例子,对我来说效果很好:
https://www.highcharts.com/docs/working-with-data/live-data
但是当第一个数据到达时,它会在图表中间绘制点:
填充数据后图形看起来没问题:
但我想对齐左边的线,即使我要画的点很少。可能吗?
此处的问题出在 xAxis
对象的 maxZoom
属性中。使用它,您可以指定最小范围 xAxis
,该范围已存在:maxZoom
已设置为 20000
。要使点左对齐,您只需从配置中删除此属性即可。这是我对此 fiddle 的编辑版本:https://jsfiddle.net/arcquim/y9eaw1rf/13/.
顺便提一下,maxZoom
is deprecated and replaced with new minRange
属性。
如果你想保持 maxZoom(实际上是 minRange)属性,你需要在第一个点的添加上设置轴最小值,当你开始移动点时 - 你应该重置最小值,所以图表将是能够改变它的极端。
load: function() {
// set up the updating of the chart each second
var chart = this;
var series = this.series[0];
var minSet = false;
var extremesReset = false;
setInterval(function() {
var x = (new Date()).getTime(), // current time
y = Math.round(Math.random() * 100);
if (!minSet) {
chart.xAxis[0].update({
min: x
}, false);
minSet = true;
}
if (series.data.length > 20 && !extremesReset) {
chart.xAxis[0].update({
min: null,
}, false)
extremesReset = true;
}
series.addPoint([x, y], true, series.data.length > 20, series.data.length);
}, 1000);
}
我正在处理图表和实时数据。我看到了这个例子,对我来说效果很好:
https://www.highcharts.com/docs/working-with-data/live-data
但是当第一个数据到达时,它会在图表中间绘制点:
填充数据后图形看起来没问题:
但我想对齐左边的线,即使我要画的点很少。可能吗?
此处的问题出在 xAxis
对象的 maxZoom
属性中。使用它,您可以指定最小范围 xAxis
,该范围已存在:maxZoom
已设置为 20000
。要使点左对齐,您只需从配置中删除此属性即可。这是我对此 fiddle 的编辑版本:https://jsfiddle.net/arcquim/y9eaw1rf/13/.
顺便提一下,maxZoom
is deprecated and replaced with new minRange
属性。
如果你想保持 maxZoom(实际上是 minRange)属性,你需要在第一个点的添加上设置轴最小值,当你开始移动点时 - 你应该重置最小值,所以图表将是能够改变它的极端。
load: function() {
// set up the updating of the chart each second
var chart = this;
var series = this.series[0];
var minSet = false;
var extremesReset = false;
setInterval(function() {
var x = (new Date()).getTime(), // current time
y = Math.round(Math.random() * 100);
if (!minSet) {
chart.xAxis[0].update({
min: x
}, false);
minSet = true;
}
if (series.data.length > 20 && !extremesReset) {
chart.xAxis[0].update({
min: null,
}, false)
extremesReset = true;
}
series.addPoint([x, y], true, series.data.length > 20, series.data.length);
}, 1000);
}