Javascript 用D3.js制作太阳暴流图
我正在学习D3,我很喜欢它!我在看书,我被困在做一个太阳暴流图的练习中 以下是我目前的代码: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
<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]
范围内,因此作者对此的评论是适当的默认值
参考资料: