Vue.js中使用D3.js绘制SVG图形

使用 D3.js 绘制 SVG 图形通常使用 D3 的 API 动态添加 SVG 元素并绘制元素。在 Vue.js 中依然可以采用该方法创建 SVG 图形。
类似 React,Vue.js 也支持 ref 属性。在 template 中定义 ref 属性。

<template>
  <div>
    <h1>
      Chart
    </h1>
    <div ref="chart_canvas_ref">
    </div>
  </div>
</template>

在 script 中可以使用如下方式通过 ref 访问元素:

this.$refs.chart_canvas_ref

D3.js 的 d3.select 支持 DOM 节点作为参数,因此创建 svg 的方法如下:

let svg_node = d3.select(this.$refs.chart_canvas_ref) 
              .append('svg')
              .attr('width', this.width)
              .attr('height', this.height);

后面就可以在 svg_node 上使用 D3.js 的 API 创建 svg 元素。