D3:给线性标度一个动态域

时间:2016-08-12 07:41:23

标签: javascript d3.js

注意:我们仍然在使用D3的v3,所以v4的东西不起作用:(

我试图以模块化的方式使用相同的代码绘制2个单独的图表,同时将数据作为参数传递。

以下代码中的所有内容都很漂亮, 除了一件小事......

我目前正在使用data1.length来计算domain的{​​{1}}。我希望能够在那里传递一个参数(例如xScale),以便我可以动态设置它。

如果你想编写一个解决方案,这里有一个方便的小JSFiddle:https://jsfiddle.net/bengrunfeld/8zpd79yp/

TIA

dataSource

1 个答案:

答案 0 :(得分:2)

像这样定义xScale,没有域名。

var xScale = d3.scale.linear()
  .range([0, width]);

这将设置xScale域动态

function drawChart(dataSource) {
      xScale.domain([0, dataSource.length]);        
      var chart = graph.select(".container")
        .append("g")
        .append("path")
          .attr("d", line(dataSource));
    }

所以现在打电话的时候:

   drawChart(data1);
   drawChart(data2);

将动态设置xScale的域。

工作代码here