49

我有一个间隔 1 分钟的时间序列。我想在缺失点为 0 的图表中显示它。

我找到了 xAxis.ordinal 并关闭了它,它显示了正确间隔的时间序列。问题是它直接在点之间画线,而对于缺失的数据没有变为 0。

4

4 回答 4

5

一种方法是预处理数据,替换null0

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/

于 2012-05-02T07:30:11.040 回答
5

我已经彻底搜索了 HighCharts 的API 参考,但他们不提供该选项。他们提供的是当null数据介于两者之间时禁用点连接的选项(仅限折线图和面积图):

var chart = new Highcharts.Chart({
    plotOptions: {
        line: {
            connectNulls: false
        }
    }
});

这是根据 API 的默认设置,所以我不确定为什么您的数据确实与两者之间的null值连接。也许他们最近更改了默认设置?

缺少数据的 HighChart 示例

我觉得这是您数据的一个很好的表示,因为默认null0似乎具有误导性。

于 2013-03-19T09:18:42.883 回答
1

您必须将丢失的数据填充为 0。因为 highchart 不知道 xAxis 间隔。

如果你有一个间隔为 1分钟的时间序列,你应该将每个缺失的分钟数据设置为 0;如果您有一个间隔为 1的时间序列,则应将每个缺失的日期数据设置为 0。

于 2014-10-20T15:08:57.640 回答
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);
}
于 2013-07-28T08:54:38.310 回答