echarts的饼图(Echarts 饼图基本用法)
导读:目录...
目录
Echarts 饼图基本用法
引入Echarts
创建饼图
拓展
引入Echarts
所介绍的两种方法 ,适用于使用Echarts的每种图 。
在一般的html里引入Echarts ,需要下载echarts.js文件 。在 https://www.jsdelivr.com/package/npm/echarts 选择 dist/echarts.js,点击并保存为 echarts.js 文件。再到html文件中引入该文件 ,如下所示 。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <!-- 引入刚刚下载的 ECharts 文件 --> <script src="echarts.js"></script> </head> </html>在使用了vue框架的项目中引入Echarts 。
直接使用命令安装Echarts资源包 。(要连网时才能正常安装)
npm install echarts --save创建饼图
从官网找到适合自己项目的图形 。下图是我选择的图形
官网上的代码如下 。官网上每个图形的“配套 ”代码只展示了配置图形的对象 。(对使用Echarts的新手不太友好)当需要自定义图形的一些细节时 ,就需要修改一些内容 。
option = { title: { text: Referer of a Website, subtext: Fake Data, left: center }, tooltip: { trigger: item }, legend: { orient: vertical, left: left }, series: [ { name: Access From, type: pie, radius: 50%, data: [ { value: 1048, name: Search Engine }, { value: 735, name: Direct }, { value: 580, name: Email }, { value: 484, name: Union Ads }, { value: 300, name: Video Ads } ], emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: rgba(0, 0, 0, 0.5) } } } ] };下面展示我项目中最终饼图的样子 ,并对饼图的一些配置进行说明 。
<template> <div class="pie-container"> <div class="pie" ref="pieBox" style="height: 100%"></div> <!-- <div class="colors"></div> --> </div> </template> <script> import * as echarts from "echarts"; // import { debounce } from "@/util/debounce.js"; export default { mounted() { this.initPieData(); window.addEventListener("resize", this.reload); //监听浏览器视口变化 ,并重绘图形 }, destroyed() { window.removeEventListener("resize", this.reload); }, data() { return { //接口返回的数据格式 echartsData: { pieArr: [ { color: "#cc80cc", name: "儿童读物", value: 0, code: "3", softFiled: 1, }, { color: "#8BA1AE", name: "言情小说", value: 0, code: "1", softFiled: 1, }, { color: "#99aa00", name: "热门推荐", value: 1, code: "0", softFiled: 3, }, { color: "#00aaff", name: "悬疑", value: 1, code: "6", softFiled: 5, }, { color: "#33aa33", name: "教辅资料", value: 1, code: "7", softFiled: 7, }, { color: "#66d5ff", name: "名著", value: 5, code: "00", softFiled: 11, }, { color: "#f0dcfc", name: "工科学习资料", value: 1, code: "11", softFiled: 11, }, { color: "#968FD3", name: "书画集", value: 0, code: "30", softFiled: 11, }, ], headMsg: { totalNum: 9, onDuty: 5, firstDeptName: "名著占比", offDuty: 4, dutyPercent: "0.55555556", }, msg: "success", }, pieChart: null, }; }, methods: { // 重新刷新界面的功能 // reload: debounce(function () { // this.disposeCharts(); // this.initPieData(); // // location.reload(); // }, 300), /** * 销毁饼图 */ disposeCharts() { echarts.dispose(this.pieChart); }, //得到饼图的数据格式(Echarts规定的格式) { value: 12, name: 在线, itemStyle: { color: #005eff } }, getPieData(pieArr) { const pieData = pieArr.map((item) => { return { value: `${item.value}`, name: `${item.name}:${item.value}本`, //name 为每一项的标题 ,影响鼠标浮动和图例 itemStyle: { color: `${item.color}` }, }; }); return pieData; }, //如果需要修改图例 ,可以得到图例的数据格式 ,在放到配置项中 // getLegendData(Arr) { // const legendData = Arr.map((item) => { // return { // name: `${item.name} ${item.value}本`, // icon: "circle", // }; // }); // return legendData; // }, //初始化饼图 initPieData() { this.pieChart = echarts.init(this.$refs.pieBox); //选中dom const dutyPercent = ((+this.echartsData.headMsg.dutyPercent).toFixed(4) * 100).toFixed(2) + "%"; //因为js本身的精度问题所以乘了一百之后又保留了两位小数 也可以用bigInt解决 let onDutyNum = this.echartsData.headMsg.onDuty; let totalNum = this.echartsData.headMsg.totalNum; let pieData = this.getPieData(this.echartsData.pieArr); //获取饼图的数据格式 let option = { backgroundColor: "#fff", //设置饼图的画布的背景色 //修改标题 title: { top: 10, //类似于定位中的top text: "名著占总售书籍的比例", subtext: `总售书:${totalNum}本 名著:(${onDutyNum}本 ,${dutyPercent})`, //f副标题 left: "center", itemGap: 12, //主标题与副标题的间隙 textStyle: { fontSize: 28, }, subtextStyle: { fontSize: 16, }, }, //修改鼠标悬浮到饼图上的文字 tooltip: { trigger: "item", formatter: "{a}<br/>{b}({d}%)", }, // 调整图例位置 legend: { top: 360, orient: "vertical", x: "center", y: "bottom", width: "100", padding: [0, 0, 5, 0], //上右下左 itemWidth: 15, icon: "circle", itemGap: 20, textStyle: { //图例字体样式 fontSize: 16, fontFamily: "微软雅黑", }, }, series: [ { top: "-40%", name: "名著占总售书籍的比例", type: "pie", radius: "60%", avoidLabelOverlap: false, data: pieData, center: ["50%", "50%"], //饼图上的指示线 label: { normal: { position: "inner", show: false, }, }, //鼠标移动上去后饼图区域的样式改变 emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: "rgba(0, 0, 0, 0.5)", }, }, }, ], }; //生成饼图 this.pieChart.setOption(option); }, }, }; </script> <style lang="scss" scoped> .pie-container { border: 1px #ccc solid; height: 700px; width: 400px; margin-left: 30px; } </style>拓展
关于鼠标悬浮到饼图上的提示字样修改 。可以学习这个博客
echarts a,b,c,d 分别表示跟用法_wu_223的博客-CSDN博客_echarts {b}
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!