如何在c3.js图表​​中使用时间序列?

时间:2018-05-21 13:56:24

标签: javascript d3.js time-series linechart c3.js

我需要根据时间序列绘制折线图。我正在使用c3.js绘制我的图表。我跟着this link来达到我的要求。

  var chart = c3.generate({
        data: {
            x: 'x',
            xFormat: '%Y',
            columns: [
                ['x', '2010', '2011', '2012', '2013', '2014', '2015','2016'],
                ['data1', 30, 200, 100, 400, 150, 250, 400],
                ['data2', 830, 1200, 1100, 1400, 1150, 1250, 1500],
            ],
            axes: {
                data2: 'y2'
            },

        },

        axis: {
            x: {

                    type: 'timeseries',
                    tick: {
                        format: '%Y'
                    }
            },
            y2: {
                show: true
            }
        },
   });

此代码工作正常。

但是当我使用时间序列时遇到问题,我的图表显示不正确。

我如何实现我的要求。我需要使用时间序列和数据时间秒来绘制批量数据。

我的要求是:

['x', '2013-01-01 12:00:00', '2013-01-02 12:00:05', '2013-01-03 12:00:10', '2013-01-04 12:00:15', '2013-01-05 12:00:20', '2013-01-10 12:00:25', '2013-01-15 12:00:30', '2013-02-15 12:00:35'],
                ['data1', 30, 200, 100, 400, 150, 250, 400],
                ['data2', 830, 1200, 1100, 1400, 1150, 1250, 1500],

       axis: {
            x: {

                    type: 'timeseries',
                    tick: {
                        format: '%Y-%m-%dT%H:%M:%S',
                    }

            },
            y2: {
                show: true
            }
        },

X轴值显示为NaN 。如何根据我的要求得到合适的结果。谢谢。

这是我的问题:   This is my issue on chart

1 个答案:

答案 0 :(得分:3)

嗯,你的数据很好。但是你错过了定义时间格式的选项。您可能需要在数据对象中添加xFormat属性并提供正确的格式。

 var chart = c3.generate({
        data: {
            x: 'x',
            xFormat: '%Y-%m-%d %H:%M:%S',
            columns: [
                ['x', '2013-01-01 12:00:00', '2013-01-02 12:00:05', '2013-01-03 12:00:10', '2013-01-04 12:00:15', '2013-01-05 12:00:20', '2013-01-10 12:00:25', '2013-01-15 12:00:30', '2013-02-15 12:00:35'],
                ['data1', 30, 200, 100, 400, 150, 250, 400, 200],
                ['data2', 830, 1200, 1100, 1400, 1150, 1250, 1500, 300],
            ],
            axes: {
                data2: 'y2'
            },

        },

        axis: {
            x: {

                    type: 'timeseries',
                    tick: {
                        format: '%Y-%m-%d %H:%M:%S',
                        rotate: -90
                    }
            },
            y2: {
                show: true
            }
        },
   });

请注意xFormat: '%Y-%m-%d %H:%M:%S'选项。实际上那是你错过的。这是一个有效的fiddle

希望它有所帮助!!