使用d3.chart.js的d3.js中的折线图

用户名

我想使用d3.chart()已经编写的图表。我找到了d3.chart()forcirclebarchartsnot for的示例line charts我的图表是折线图,我需要在其中使用以下代码d3.charts()

svg.append("path")
      .datum(data)
      .attr("class", "line")
      .attr("d", line);

但是尝试像这样使用时面临问题

<!DOCTYPE html>
<html>
 <head>
    <script type="text/javascript" src="d3.v3.min.js"></script>
    <script type="text/javascript" src="d3.chart.min.js"></script>

 </head>
 <body>
 <div id="vis"></div>
<script type="text/javascript">


d3.chart("linechart", {

  initialize: function() {
    // create a base scale we will use later.
   var chart = this;
    chart.w = chart.base.attr('width') || 200;
    chart.h = chart.base.attr('height') || 150;
    chart.w = +chart.w;
    chart.h = +chart.h;

   chart.x = d3.scale.linear()
      .range([0, chart.w]);

  chart.y = d3.scale.linear()
      .range([chart.h,0]);

  chart.base.classed('line', true);

  this.areas = {};
      chart.areas.lines = chart.base.append('g')
              .classed('lines', true)
              .attr('width', chart.w)
              .attr('height', chart.h)

       chart.line = d3.svg.line()
                  .x(function(d) { return chart.x(d.x);})   
                  .y(function(d) { return chart.y(d.y);});


    this.layer("lines", chart.areas.lines, {
      dataBind: function(data) {
        // update the domain of the xScale since it depends on the data
           chart.y.domain([d3.min(data,function(d){return d.y}),d3.max(data,function(d){return d.y})])
            chart.x.domain(d3.extent(data, function(d) { return d.x; }));

        // return a data bound selection for the passed in data.
                                    return this.append("path")
                                              .datum(data)
                                              .attr("d", chart.line)
                                              .attr('stroke','#1ABC9C')
                                              .attr('stroke-width','2')
                                              .attr('fill','none');
      },
      insert: function() {

        return null;

      },

    });
  },

  // configures the width of the chart.
  // when called without arguments, returns the
  // current width.
  width: function(newWidth) {
    if (arguments.length === 0) {
      return this.w;
    }
    this.w = newWidth;
    return this;
  },

  // configures the height of the chart.
  // when called without arguments, returns the
  // current height.
  height: function(newHeight) {
    if (arguments.length === 0) {
      return this.h;
    }
    this.h = newHeight;
    return this;
  },

});

var data = [
{x: 0,y:190},
  {x: 1,y:10},{x: 2,y:40},{x: 3,y:90},
  {x: 4,y:30},{x: 5,y:20},{x: 6,y:10}
];

var chart1 = d3.select("#vis")
  .append("svg")
  .chart("linechart")
  .width(720)
  .height(320)

chart1.draw(data);
</script>
</body>
</html>

错误:

未捕获的错误:[d3.chart]图层选择未正确绑定。

我也得到了线和错误。

注:获得d3.chart.min.js该链接获得d3.v3.min.js这个链接

更新:我从@LarsKotthoff答案中得到了答案,但是图像有所不同。在应用D3之前应用D3之后,请检查此链接

拉尔斯·科特霍夫(Lars Kotthoff)

似乎您将insertdataBind操作混淆了-在前者中,您应该追加新元素,而后者仅绑定数据。通过以下修改,您的代码对我来说很好用。

dataBind: function(data) {
    // update the domain of the xScale since it depends on the data
       chart.y.domain([d3.min(data,function(d){return d.y}),d3.max(data,function(d){return d.y})])
        chart.x.domain(d3.extent(data, function(d) { return d.x; }));

    // return a data bound selection for the passed in data.
    return this.selectAll("path").data([data]);
  },
 insert: function() {
    return this.append("path")
              .attr("d", chart.line)
              .attr('stroke','#1ABC9C')
              .attr('stroke-width','2')
              .attr('fill','none');

  }

请注意,这不适用于多行-为此,请更改.data([data]).data(data)并使用嵌套数组,例如[[{x:0,y:0},...], [{x:1,y:1},...], ...]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在 D3.js 中创建折线图

来自分类Dev

如何使用D3 js在折线图中使用工具提示

来自分类Dev

如何使用D3 js在折线图中使用工具提示

来自分类Dev

D3中的折线图动态数据更新

来自分类Dev

在D3中的折线图下填充颜色

来自分类Dev

d3中json数据的折线图

来自分类Dev

D3中的动画折线图

来自分类Dev

在折线图D3中获得平滑的动画

来自分类Dev

D3中的折线图动态数据更新

来自分类Dev

D3中的嵌套图和折线图

来自分类Dev

D3 –折线图问题

来自分类Dev

d3累积折线图

来自分类Dev

增加chart.js中折线图的标签大小

来自分类Dev

使用D3更新多折线图的模式

来自分类Dev

使用d3 + react绘制路径(折线图)

来自分类Dev

使用 D3 使折线图角度更平滑

来自分类Dev

折线图d3 js-- x轴月

来自分类Dev

D3JS折线图在折线之间的过渡

来自分类Dev

从d3.js中的折线图中删除折线

来自分类Dev

从d3.js中的折线图中删除折线

来自分类Dev

使用折线图 d3 中的下拉菜单重新缩放 x 轴

来自分类Dev

使用d3.js构建折线图

来自分类Dev

使用数组制作折线图-D3.js

来自分类Dev

在 d3 中,如何将样式应用到折线图的折线图和折线图下方的区域?

来自分类Dev

使用Chart.js更改折线图的标签字体颜色

来自分类Dev

是否可以使用chart.js恢复折线图中的x轴值

来自分类Dev

使用chart.js将数据添加到折线图

来自分类Dev

如何使用Chart.js显示折线图数据集点标签?

来自分类Dev

如何将Chart.js折线图与车把一起使用?