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
网页CAD(JS Vue 预览dwg)如何二次开发常用的CAD编辑功能
```markdown # CAD网页编程概览 - 使用mxcad库,实现CAD操作如删除、复制、镜像、移动和旋转。 - `erase()`方法删除实体,`clone()`配合`transformBy()`用于复制和编辑。 - `mirror()`和`transformBy(setMirror)`执行镜像操作,基于参考线。 - `move()`和`transformBy(setToTranslation)`实现移动功能。 - `rotate()`和`transformBy(setToRotation)`进行旋转,支持角度输入。 ```
网页CAD(JS Vue 预览dwg)如何二次开发常用的CAD编辑功能
|
2天前
|
JSON JavaScript 数据格式
vue 绘制波形图 wavesurfer.js (音频/视频) 【实用教程】
vue 绘制波形图 wavesurfer.js (音频/视频) 【实用教程】
17 3
|
3天前
|
JavaScript 前端开发 容器
vue组件封装——固定宽高比的容器(2种方法:纯CSS实现 + JS实现)
vue组件封装——固定宽高比的容器(2种方法:纯CSS实现 + JS实现)
9 2
|
3天前
|
JavaScript
vue 全局响应键盘按键/监听键盘事件(含 js 获取键盘keyCode值的方法)
vue 全局响应键盘按键/监听键盘事件(含 js 获取键盘keyCode值的方法)
10 2
|
3天前
|
运维 JavaScript 前端开发
前端 JS 经典:vue 开发中的 base 和 publicPath
前端 JS 经典:vue 开发中的 base 和 publicPath
10 1
|
3天前
|
JavaScript 前端开发
vue 模拟随机变速的动态打字特效【支持多行文本】(含css实现闪烁光标,js动态改变setInterval定时器的时间间隔)
vue 模拟随机变速的动态打字特效【支持多行文本】(含css实现闪烁光标,js动态改变setInterval定时器的时间间隔)
6 1
|
3天前
|
JavaScript
vue + d3.js(v6) 绘制【树状图/思维导图】可折叠/展开,可点击跳转,可带标签
vue + d3.js(v6) 绘制【树状图/思维导图】可折叠/展开,可点击跳转,可带标签
16 1
|
1天前
|
JavaScript
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
7 0
|
3天前
|
JavaScript
Eslint.js文件Vue中没有,如何修改配置
Eslint.js文件Vue中没有,如何修改配置
|
3天前
|
JavaScript 前端开发
前端 JS 经典:Vue 状态仓库持久化
前端 JS 经典:Vue 状态仓库持久化
5 0