vue + d3.js(v6) 绘制【饼图】

简介: vue + d3.js(v6) 绘制【饼图】

<template>
    <div></div>
</template>
<script>
    import * as d3 from 'd3';
 
    export default {
        mounted() {
            let dataList = [30, 10, 43, 55, 13];
            // 将源数据转换为可以生成饼图的数据(有起始角度(startAngle)和终止角度(endAngle))
            let piedata = d3.pie()(dataList);
            // 画布的参数
            let mapWidth = 300;
            let mapHeight = 300;
            let mapPadding = 20
            // 定义画布—— 宽 300 高 300 外边距 10px
            let svgMap = d3.select("div").append('svg').attr("width", mapWidth).attr("height", mapHeight).style("margin", "10px")
            //定义弧形生成器
            let innerRadius = 0;//内半径,为0则中间没有空白
            let outerRadius = mapWidth / 2 - mapPadding; //外半径
            let arc_generator = d3.arc()
                .innerRadius(innerRadius)
                .outerRadius(outerRadius);
            // 创建分组
            let groups = svgMap.selectAll("g")
                .data(piedata)
                .enter()
                // 添加分组
                .append("g")
                .attr("transform", "translate(" + (mapWidth / 2) + "," + (mapHeight / 2) + ")")
            // 绘制饼图——添加弧形路径
            groups.append("path")
            // 给路径填充不同的颜色
                .attr("fill", function (d, i) {
                    //定义颜色比例尺,让不同的扇形呈现不同的颜色
                    let colorScale = d3.scaleOrdinal()
                        .domain(d3.range(piedata.length))
                        .range(d3.schemeCategory10);
                    return colorScale(i);
                })
                // 根据饼图数据,绘制弧形路径
                .attr("d", function (d) {
                    return arc_generator(d);   //调用弧生成器,得到路径值
                })
            // 添加文字
            groups.append("text")
                .attr("transform", function (d) {//位置设在中心处
                    return "translate(" + arc_generator.centroid(d) + ")";
                })
                .attr("text-anchor", "middle")
                .text(function (d) {
                    return d.data;
                })
        },
    }
</script>
<style scoped>
</style>
目录
相关文章
|
2月前
|
JavaScript 前端开发 开发者
VUE 开发——Node.js学习(一)
VUE 开发——Node.js学习(一)
72 3
|
4月前
|
JSON JavaScript 前端开发
JavaScript 详解——Vue基础
【8月更文挑战第16天】
58 3
JavaScript 详解——Vue基础
|
3月前
|
JavaScript 前端开发 API
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
|
2月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
164 0
|
2月前
|
JavaScript
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
46 0
|
2月前
|
JavaScript 前端开发
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
|
3月前
|
前端开发 JavaScript 开发者
Express.js与前端框架的集成:React、Vue和Angular的示例与技巧
本文介绍了如何将简洁灵活的Node.js后端框架Express.js与三大流行前端框架——React、Vue及Angular进行集成,以提升开发效率与代码可维护性。文中提供了详细的示例代码和实用技巧,展示了如何利用Express.js处理路由和静态文件服务,同时在React、Vue和Angular中构建用户界面,帮助开发者快速掌握前后端分离的开发方法,实现高效、灵活的Web应用构建。
59 3
|
3月前
|
移动开发 前端开发 JavaScript
HTML5 + JavaScript绘制饼图+1
HTML5 + JavaScript绘制饼图+1
|
4月前
|
JSON JavaScript 前端开发
Android调用Vue中的JavaScript代码
Android调用Vue中的JavaScript代码
42 3
|
4月前
|
JavaScript
Vue项目打包后都产生了哪些JS请求?
【8月更文挑战第19天】Vue项目打包后都产生了哪些JS请求?
121 0
Vue项目打包后都产生了哪些JS请求?