d3.js.

2021-03-18 11:11:18

计算的属性通常是指绑定数据。数据被指定为值数组,每个值作为第一个参数(d)传递给选择函数。使用默认连接逐索引,数据数组中的第一个元素将在选择中传递给第一个节点,第二个元素到第二个节点,等等。例如,如果将数字数组绑定到段落元素,则可以使用这些数字来计算动态字体大小:d3.selectall(" p").data([4,8,15,16, 23,42]).Style("字体大小"功能(d){return d +" px&#34 ;;});

一旦数据绑定到文档,就可以省略数据运算符; D3将检索先前绑定的数据。这允许您在不重新绑定的情况下重新计算属性。使用D3的Enter和Exit选择,您可以为传入数据创建新节点,并删除不再需要的传出节点。当数据绑定到选择时,数据阵列中的每个元素都与选择中的相应节点配对。如果节点少于数据,则额外的数据元素形成Enter选择,您可以通过附加到Enter选择来实例化。例如:D3.选择("身体").selectall(" p" p").data([4,8,15,16,23,42]).ener()。附加(" p").text(函数(d){return"我是号码" + d +"!&#34 ;;});

更新节点是默认选择 - 数据运算符的结果。因此,如果您忘记了输入和退出选择,您将自动仅选择存在相应数据的元素。一个常见的模式是将初始选择分为三个部分:更新要修改的节点,要添加的输入节点以及要删除的退出节点。 //更新... var p = d3.select("身体").selectall(" p" p").data([4,8,15,16,23,42])。文本(函数(d){return d;}); //输入... p.enter()。附加(" p" p").text(函数(d){return d;}); //退出... p.exit()。删除();

通过单独处理这三个案例,准确地指定了哪些操作在哪些节点上运行。这提高了性能并提供了更大的转换控制。例如,使用条形图,您可以使用旧刻度初始化输入栏,然后在更新和退出栏中过渡到新比例的进入栏。 D3允许您根据数据转换文档;这包括创建和销毁元素。 D3允许您响应用户交互,随时间的动画或甚至来自第三方的异步通知来更改现有文档。混合方法甚至可能,其中文档最初在服务器上呈现,并通过D3在客户端上更新。 D3不会引入新的视觉表示。与处理或Protovis不同,D3的图形标记的词汇表直接来自Web标准:HTML,SVG和CSS。例如,您可以使用D3创建SVG元素并使用外部样式表进行样式。您可以使用复合滤波器效果,虚线笔划和剪切。如果浏览器供应商明天介绍新功能,您将能够立即使用它们 - 无需工具包更新。而且,如果您在将来决定使用除D3以外的工具包,您可以与您联系您的标准知识!最重要的是,D3易于使用浏览器内置元素检查器进行调试:用D3操纵的节点正是浏览器本身理解的节点。 D3对转换的关注自然地扩展到动画过渡。过渡随着时间的推移逐渐地插入样式和属性。可以通过宽松的功能来控制TWEENing,例如“弹性”,“立方英液”和“线性”。 D3的内插器支持两个基元,例如嵌入字符串内的数字和数字(字体大小,路径数据等)和复合值。您甚至可以扩展D3的内插器注册表以支持复杂的属性和数据结构。例如,要将页面的背景逐渐消失为黑色:或者,以交错延迟调整符号映射中的圆圈大小:d3.selectall(" circle")。转换().duration(750)。延迟(函数(d,i){return i * 10;}).ATTR(" R"函数(d){return math.sqrt(d * scale);});

通过仅修改实际改变的属性,D3减少开销并允许高帧速率下的更大的图形复杂度。 D3还允许通过事件进行复杂转换。而且,您仍然可以使用CSS3过渡; D3不替换浏览器的工具箱,但以更易于使用的方式暴露它。