C3JS - 无法读取未定义的属性"category10"

JJC*_*JJC 29 javascript charts graph d3.js c3.js

我从jsfiddle(https://jsfiddle.net/varunoberoi/mcd6ucge)尝试了这个c3.js代码,但它似乎在我的localhost中不起作用.

我使用uniserver作为我的服务器.我复制粘贴一切,但它不起作用.

<html>
    <head>
        <!-- CSS -->
        <link href="css/c3.css" rel="stylesheet" type="text/css" />

        <!-- JAVASCRIPT -->
        <script src="js/d3.min.js" type="text/javascript"></script>
        <script src="js/c3.js" type="text/javascript"></script>

        <script type="text/javascript">
            window.onload=function(){
                var chart = c3.generate({
                    data: {
                        columns: [
                            ['data1', 300, 350, 300, 0, 0, 0],
                            ['data2', 130, 100, 140, 200, 150, 50]
                        ],
                        types: {
                            data1: 'area',
                            data2: 'area-spline'
                        }
                    },
                    axis: {
                        y: {
                            padding: {bottom: 0},
                            min: 0
                        },
                        x: {
                            padding: {left: 0},
                            min: 0,
                            show: false
                        }
                    }

                });
            }
        </script>
    </head>
    <body>
        <div id="chart"></div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

检查开发人员工具控制台时我得到的是:

c3.js:5783 Uncaught TypeError: Cannot read property 'category10' of undefined
Run Code Online (Sandbox Code Playgroud)

我尝试了不同版本的c3.js,但没有.这很奇怪,因为它在jsfiddle而不是在我的本地工作.

Art*_*ken 75

我通过从D3.js v4(4.1.1)降级到v3(3.5.17)解决了另一个项目中完全相同的JavaScript错误.

事实证明,截至2016年7月,C3.js 不支持D3.js v4:

它绝对不会像[D3.js] 4.0一样工作.D3 v4具有完全不同的命名空间,绝不向后兼容.更新到v4是一项非常重要的任务.

  • 你可以在这里获得版本https://github.com/d3/d3/releases/tag/v3.5.17?谢谢你的回答,这有很多帮助. (7认同)

Jae*_*ark 7

这是因为,C3.js基于D3 v3,并且当尝试使用D3 v4运行时会发生错误.

错误发生在下面的代码行:

pattern = notEmpty(config.color_pattern) ?
    config.color_pattern : d3.scale.category10().range()
Run Code Online (Sandbox Code Playgroud)

在D3 v4上,d3.scale.category10().range()应该用作d3.scaleOrdinal(d3.schemeCategory10),但由于C3.js无法在D3 v4上运行,因此仅更改此部分代码无意义.


如果有人需要使用D3 v4 +,请尝试https://naver.github.io/billboard.js/.

billboard.js是C3.js的分叉项目,具有与D3 v4 +支持相同的界面.