我有一个间隔 1 分钟的时间序列。我想在缺失点为 0 的图表中显示它。
我找到了 xAxis.ordinal 并关闭了它,它显示了正确间隔的时间序列。问题是它直接在点之间画线,而对于缺失的数据没有变为 0。
我有一个间隔 1 分钟的时间序列。我想在缺失点为 0 的图表中显示它。
我找到了 xAxis.ordinal 并关闭了它,它显示了正确间隔的时间序列。问题是它直接在点之间画线,而对于缺失的数据没有变为 0。
一种方法是预处理数据,替换null
为0
:
var withNulls = [null, 12, 23, 45, 3.44, null, 0];
var noNulls = withNulls.map(function (item) {
return (item === null) ? 0 : item;
});
保存在 jsfiddle 上的示例:http: //jsfiddle.net/7mhMP/
我已经彻底搜索了 HighCharts 的API 参考,但他们不提供该选项。他们提供的是当null
数据介于两者之间时禁用点连接的选项(仅限折线图和面积图):
var chart = new Highcharts.Chart({
plotOptions: {
line: {
connectNulls: false
}
}
});
这是根据 API 的默认设置,所以我不确定为什么您的数据确实与两者之间的null
值连接。也许他们最近更改了默认设置?
我觉得这是您数据的一个很好的表示,因为默认null
为0
似乎具有误导性。
您必须将丢失的数据填充为 0。因为 highchart 不知道 xAxis 间隔。
如果你有一个间隔为 1分钟的时间序列,你应该将每个缺失的分钟数据设置为 0;如果您有一个间隔为 1天的时间序列,则应将每个缺失的日期数据设置为 0。
我有同样的问题,我的理解是你应该将数据库中的数据结构设置为 VARCHAR 并将默认值设置为 null,这样在没有数据的地方它就变为 NULL。然后它接受空值,highchart 不显示并将缺失区域与null
值连接。
此外,您必须接收数据NULL
并且不要将它们更改为''
.
看到这个工作示例:
var chart = new Highcharts.Chart({
chart: {
defaultSeriesType: 'spline', // use line or spline
renderTo: 'container1'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
series: [{
data: [9, 4,null, 2, 1, 0, 6, 5, 4, 1, 6, 4]
}]
});
这null
是使用和使用两个不同图表的小提琴''
更新:
如果您使用 parseINT 来推送数据,您应该记住这parseINT(NULL)
给了您NAN
因此对于此错误尝试手动推送 NULL,如下所示:
var val = parseInt(rows[i]);
if (isNaN(val))
{
val = null;
result.push(val);
}