three little circle

<svg style={{ width: 720, height: 120 }}>
  <circle cx="40" cy="60" r="10"></circle>
  <circle cx="80" cy="60" r="10"></circle>
  <circle cx="120" cy="60" r="10"></circle>
</svg>
1.png

选择元素

  • 使用selectAll/select来选择元素.
  • 可以使用style/attr来设置元素属性.
const circle = d3.selectAll('circle');
circle.style('fill', 'steelblue').attr('r', 30)
  .attr('cx', () => Math.random() * 720);

绑定数据

  • 使用data方法来绑定数据.
  • 绑定数据后, 每个属性的方法第一个参数对应数据的元素, 第二个参数对应索引.
const data = [32, 57, 112];
const circle = d3.selectAll('circle');
circle.data(data).style('fill', 'steelblue').attr('r', (d, i) => i + Math.sqrt(d));
2.PNG

新建元素

  • 使用enter属性来新建元素.
const svg = d3.select("svg");
svg.selectAll("circle").data([32, 57, 112, 293])
  .enter().append("circle")
  .attrs({ cx: (d, i) => i * 100 + 30, cy: 60, r: d => Math.sqrt(d)});
  • circle最早是没有的, 但是我们可以先selectAll, 然后enter后append("circle"), 这样circle就动态生成了.
  • 安装d3-selection-multi, 就可以使用attrs属性.


    3.PNG

删除元素

  • 使用exit来保留提供数据的元素. 如果执行remove, 则删除没提供数据的剩余元素.
const svg = d3.select("svg");
svg.selectAll("circle").data([32, 57, 112, 293])
  .enter().append("circle")
  .attrs({ cx: (d, i) => i * 100 + 30, cy: 60, r: d => Math.sqrt(d)});

svg.selectAll("circle").data([32, 57])
  .exit().remove();
  • 这样32, 57对应的元素就保留下来, 112, 293对应的元素则被删除.
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 11,011评论 0 9
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 10,161评论 0 0
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,218评论 0 5
  • 挣扎是你想知道自己为什么要创办公司时的状态。 挣扎是人们问你为什么不退出,你却不知怎么回答时的状态。挣扎是你的员工...
    儒商诗人阅读 2,732评论 0 2
  • 使用express框架搭建一个服务器 下载: npm install express最基本的 关于处理用户请求se...
    笨小妞_9ed3阅读 5,551评论 0 0

友情链接更多精彩内容