d3-v4.x版本-环状图

v4.x 版本-环状图

代码是基于vue 2.x版本项目中,代码注释部分为关键点解释都是基于d3-v4.x版本的。

demo实现效果图如下:

实现代码如下:(包含关键代码注释)

<template>
  <div class="hello">

  </div>
</template>

<script>
const d3 = require("d3");
// import * as d3 from "d3"
export default {
  data() {
    return {};
  },
  mounted: function() {
    this.$nextTick(function() {
      var data = [10, 1, 2, 3, 5, 8]; 

      var width = 960,
        height = 500;

      var outerRadius = height / 2;
      var innerRadius = height/3;

      var pie = d3.pie(); //饼图数据生成器,将数据生成 {"data":  1, "value":  1, "index": 6, "startAngle": 6.050474740247008, "endAngle": 6.166830023713296, "padAngle": 0},
      // .padAngle(0.02);
      var color = [
        "#98abc5",
        "#8a89a6",
        "#7b6888",
        "#6b486b",
        "#a05d56",
        "#d0743c",
        "#ff8c00"
      ];
      var path = d3
        .arc() //弧形生成器,将饼图生成的数据放在弧度生成器里使用。
        // .padRadius(outerRadius)
        .innerRadius(innerRadius)
        .outerRadius(outerRadius);

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

      var g = svg
        .append("g")
        .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");

      var arc = g
        .selectAll(".arc")
        .data(pie(data))
        .enter()
        .append("g")
        .attr("class", "arc");

      arc
        .append("path")
        .attr("d", path)
        .attr("fill", function(d, i) {
          return color[i];
        })

      arc
        .append("text")
        .attr("transform", function(d) {
          return "translate(" + path.centroid(d) + ")";
        })
        .attr("dy", "0.35em")
        .text(function(d) {
          return d.value;
        });
      
    });
  },
};
</script>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值