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

标签 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

最佳答案

嗯,你的数据没问题。但是您错过了定义时间格式的选项。您可能需要在数据对象中添加 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 .

希望对您有所帮助!

关于javascript - 如何在 c3.js 图表中使用时间序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50450502/

相关文章:

python - Pandas 情节系列,系列名称排成一行

javascript - 为什么 'd3.select("svg") == d3.select ("svg")' resolve to ' false'?

javascript - d3.json() 支持身份验证吗?如果没有,还有哪些其他 JavaScript 选项可用于 JSON 检索?

python - 如何在 pandas 数据框中应用递归数字过滤器?

javascript - 触发动态构建的新元素

javascript - 如何在 d3 中有 2 个矩形重叠来制作进度条?

python - 更新行的替代方法

JavaScript 双重赋值

javascript - Ajax 调用 URL 在 Spring 服务器上找不到 @RequestMapping 值

javascript - ExtJS 默认过滤器处于事件状态,但网格未过滤