我有1分钟的时间序列。我想在缺少点的图表中显示为0。
我找到了xAxis.ordinal并将其关闭,显示时间序列正确间隔开。问题在于它直接在点之间绘制线,而不会为丢失的数据设置为0。
答案 0 :(得分:5)
一种方法是预处理数据,将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/
答案 1 :(得分:5)
我已经彻底搜查了API reference of HighCharts,但他们没有提供这个选项。他们提供的是当null
数据位于其间时(仅限行和区域图表)禁用点连接的选项:
var chart = new Highcharts.Chart({
plotOptions: {
line: {
connectNulls: false
}
}
});
这是根据API的默认设置,因此我不确定为什么您的数据会在其间与null
值相关联。也许他们最近改变了默认值?
我认为这是对您的数据的良好表示,因为默认null
到0
似乎具有误导性。
答案 2 :(得分:1)
你需要将错过的数据填充为0。 因为高图不知道xAxis间隔。
如果您的时间间隔为1 分钟,则应将每个缺少的分钟数据设置为0; 如果您的时间序列为1 天,则应将每个缺少的天数据设置为0。
答案 3 :(得分:0)
我有同样的问题,我的理解是你应该将数据库中的数据结构设置为VARCHAR并将默认值设置为null,这样如果没有数据,它将变为NULL。然后它接受空值,并且高亮显示不会显示并连接缺少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]
}]
});
here是使用null
和''
<强>更新强>
如果你使用parseINT推送数据,你应该记住parseINT(NULL)
给你NAN
所以对于这个bug,尝试用这样的东西手动推NULL:
var val = parseInt(rows[i]);
if (isNaN(val))
{
val = null;
result.push(val);
}