首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在React中使用D3创建条形图

尝试在React中使用D3创建条形图
EN

Stack Overflow用户
提问于 2017-05-03 06:59:58
回答 1查看 1.7K关注 0票数 3

我正在尝试使用D3在我的web应用程序上呈现一个简单的条形图,该应用程序使用React作为前端。

我刚接触D3,在我的网页上显示条形图的时间很紧,所以我认为对我来说最简单的事情就是找到一个使用D3 (http://jsfiddle.net/tommy351/P4Z75/)呈现简单条形图的jsfiddle,然后将代码复制并粘贴到我的dashboard.tsx文件中。

注意:我之所以选择D3,是因为其他更容易使用的图表库与React (即recharts,react-d3)集成得更顺畅,没有TypeScript定义文件。

下面是我的dashboard.tsx文件的一个片段:

代码语言:javascript
复制
         import * as React from "react";
         import * as ReactDOM from "react-dom";
         import * as D3 from "d3";

         var data = [4, 5, 10, 16, 23, 35];
         var width = 500;
         var barHeight = 20;

         var x = d3.scale.linear()
             .domain([0, d3.max(data)])
             .range([0, width]);

        var chart = d3.select('#chart')
             .attr('width', width)
             .attr('height', barHeight * data.length);

        var bar = chart.selectAll('g')
            .data(data)
            .enter()
            .append('g')
            .attr('transform', function (d, i) {
              return 'translate(0,' + barHeight * i + ')';
             });

       bar.append('rect')
             .attr('width', x)
             .attr('height', barHeight - 1);

       bar.append('text')
              .attr('x', function (d) {
                return x(d) - 3;
               })
              .attr('y', barHeight / 2)
              .attr('dy', '.35em')
              .text(function (d) {
                return d;
               });
      render() {
         return ( <div>
            <svg id="chart"></svg>
            </div>
        );
    }
}

我在控制台中得到的错误有:

代码语言:javascript
复制
 Uncaught ReferenceError: Chartjs is not defined
   at Object.map../af (vendorReact.js:26748)
   at __webpack_require__ (vendorReact.js:53)
   at Object.<anonymous> (vendorReact.js:107)
   at __webpack_require__ (vendorReact.js:53)
   at vendorReact.js:96
   at vendorReact.js:99

 Dashboard.js:17482 Uncaught TypeError: Cannot read property 'linear' of 
    undefined
   at Object.<anonymous> (Dashboard.js:17482)
   at Object.<anonymous> (Dashboard.js:17721)
   at Object.163 (Dashboard.js:17723)
   at __webpack_require__ (vendorReact.js:53)
   at Object.0 (Dashboard.js:17)
   at __webpack_require__ (vendorReact.js:53)
   at webpackJsonpCallback (vendorReact.js:24)
   at Dashboard.js:1

我已经用大量的jsfiddle尝试了同样的方法,在我的控制台中得到了类似的错误,并且无法获得要呈现的图表。你知道问题出在哪里吗?

EN

回答 1

Stack Overflow用户

发布于 2017-05-03 07:15:28

不确定您的第一个错误,但第二个错误可能是由于d3版本。如果要导入最新版本的d3,则var x = d3.scale.linear()需要为var x = d3.scaleLinear()。有关详细信息,请参阅docs

注:我通常只会把这作为一个评论,因为它不能回答整个问题,我有1个名誉点,因为我不能评论抱歉。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43748525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档