Javascript 用D3.js制作太阳暴流图

Javascript 用D3.js制作太阳暴流图,javascript,d3.js,Javascript,D3.js,我正在学习D3,我很喜欢它!我在看书,我被困在做一个太阳暴流图的练习中 以下是我目前的代码: <div id="sunburst"></div> <%--Then write/append script to container--%> <script type="text/javascript"> <%--Calculate the maximum radius--%> var width

我正在学习D3,我很喜欢它!我在看书,我被困在做一个太阳暴流图的练习中

以下是我目前的代码:

<div id="sunburst"></div>

   <%--Then write/append script to container--%>
   <script type="text/javascript">

       <%--Calculate the maximum radius--%>
       var width = 640, height = 400, maxRadius = Math.min(width,height)/2;

       var svg = d3.select("sunburst").append("svg")
           .attr("width", width)
           .attr("height", height);

      //Center sunburst parameter at (0,0), so it's easier to parameters
      var g = sag.append("g");
           .attr("transform", "translate(" + (width/2) + "," + (height/2) + ")");

      //Scales are D3 objects used to convert input values into svg coordinates (i.e. pixels).
      var theta = d3.scale.linear()
          .range([0,2 * Math.PI]);
      var radius = d3.scale.sqrt()
          .range([0,maxRadius]);

变量宽度=640,高度=400,最大半径=数学最小值(宽度,高度)/2;
var svg=d3.select(“sunburst”).append(“svg”)
.attr(“宽度”,宽度)
.attr(“高度”,高度);
//将sunburst参数的中心设置为(0,0),因此更容易设置参数
var g=凹陷附加(“g”);
.attr(“变换”、“平移”(+(宽度/2)+)、“+(高度/2)+”);
//比例是用于将输入值转换为svg坐标(即像素)的D3对象。
var theta=d3.scale.linear()
.范围([0,2*Math.PI]);
var radius=d3.scale.sqrt()
.范围([0,最大半径]);
此时,作者说[0,1]的默认域正是我们在本例中需要的。我很困惑,因为θ和半径可以大于1,不是吗?我一定错过了什么明显的东西

非常感谢您抽出时间!:)

比例
功能输出的值实际上可以大于1。这就是
范围的定义。
scale
函数还有一个用于缩放的输入间隔,即
,该示例中未指定。默认设置为
[0,1]
。然后,使用本例中指定的缩放类型:
线性
,将输入值(跨
区间)映射到输出值(跨
范围
区间)

因此,完整版本将是:

  var theta = d3.scale.linear()
      .domain([0,1])
      .range([0,2 * Math.PI]);
表示0映射到0;1映射到2*pi;0.5映射到pi

无论如何,在练习中的示例中,我假设使用
θ
标度的输入将在
[0,1]
范围内,因此作者对此的评论是适当的默认值

参考资料:

缩放功能输出的值实际上可以大于1。这就是
范围的定义。
scale
函数还有一个用于缩放的输入间隔,即
,该示例中未指定。默认设置为
[0,1]
。然后,使用本例中指定的缩放类型:
线性
,将输入值(跨
区间)映射到输出值(跨
范围
区间)

因此,完整版本将是:

  var theta = d3.scale.linear()
      .domain([0,1])
      .range([0,2 * Math.PI]);
表示0映射到0;1映射到2*pi;0.5映射到pi

无论如何,在练习中的示例中,我假设使用
θ
标度的输入将在
[0,1]
范围内,因此作者对此的评论是适当的默认值

参考资料: