d3 弧生成器

  • 下定决心,好好过一天~
    在这里插入图片描述
    在这里插入图片描述

这里我的d3是v7版本,框架使用的是vue框架。可以只看methods中写的代码即可
源代码

<template>
  <div id="ArcChartsD3" width=600 heoght=600></div>
</template>

<script>
import * as d3 from "d3"
export default {
    name:"ArcChartsD3",
    mounted(){
        this.ArcChartsD3();
    },
    methods:{
        ArcChartsD3(){
            var dataAll = {startAngle:0,endAngle:Math.PI * 0.75};
            var dataAll1 = [{startAngle:0,endAngle:Math.PI * 0.75},
                            {startAngle:Math.PI * 0.75,endAngle:Math.PI * 1.2},
                            {startAngle:Math.PI * 1.2,endAngle:Math.PI * 1.8},
                            {startAngle:Math.PI * 1.8,endAngle:Math.PI * 2}]
            var svgWidth = 600;
            var svgHeight = 600;
            var svg = d3.select("#ArcChartsD3")
                        .append("svg")
                        .attr("width",svgWidth)
                        .attr("height",svgHeight);
            
            var arcPath = d3.arc()
                            .innerRadius(50)
                            .outerRadius(100);
            
            var arcPath1 = d3.arc()
                            .innerRadius(0)
                            .outerRadius(100);
            
            var color = d3.scaleOrdinal(d3.schemeCategory10);
            
            function ArcChartsD3(){
                var updateCharts = svg.append("path")
                                        .attr("d",arcPath(dataAll))
                                        .attr("transform","translate(50,200)")
                                        .attr("stroke","black")
                                        .attr("stroke-width","3px")
                                        .attr("fill",function(d,i){
                                            return color(i);
                                        });
            }

            function ArcChartsD31(){
                var updateCharts = svg.selectAll("path")
                                        .data(dataAll1)
                                        .enter()
                                        .append("path")
                                        .attr("d",function(d,i){
                                            // console.log(d);
                                            return arcPath1(d);
                                        })
                                        .attr("transform","translate(200,200)")
                                        .attr("stroke","black")
                                        .attr("stroke-width","3px")
                                        .attr("fill",function(d,i){
                                            return color(i);
                                        });
            }

            function ArcChartsD31Text(){
                svg.selectAll("text")
                    .data(dataAll1)
                    .enter()
                    .append("text")
                    .attr("transform",function(d){
                        console.log(d);
                        return "translate(200,200)" + "translate(" + arcPath1.centroid(d) + ")";
                    })
                    .attr("text-anchor","middle")
                    .attr("fill","white")
                    .attr("font-size","18px")
                    .text(function(d,i){
                        // console.log(d);
                        // console.log(Math.floor((d.endAngle - d.startAngle) * 180 / Math.PI ) + "°");
                        return Math.floor((d.endAngle - d.startAngle) * 180 / Math.PI) + '°';
                    })
            }
            // ArcChartsD3();
            ArcChartsD31();
            ArcChartsD31Text();
        }
    }
}
</script>

<style>

</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值