echarts——圆环饼图

news/2024/10/21 6:10:10/

在这里插入图片描述

需求

  • 需求:圆环饼图
    • 1、每个圆环分为左右两部分,分别为每个商品的库存和销量,销量设置为渐变色
    • 2、在圆环中心显示该商品名字和销量,设置不同的颜色
    • 3、每次展示5个产品的圆环图,定时切换展示下一页商品,这里就不写了
    • 4、随着屏幕的变化,适配标题大小和圆环的半径以及内部标签文字的大小
<template><div class="w100 h100"><div ref="looppie" class="w100 h100"></div></div>
</template><script>
import { ququ } from "../../public/static/theme/ququ";
export default {data() {return {size: null, //基准字体大小——控制标题和图例的大小looppieChart: null,looppieData: [{name: "服装",stock: 100,sales: 200,},{name: "水果",stock: 140,sales: 210,},{name: "家居",stock: 50,sales: 120,},{name: "奶粉",stock: 170,sales: 200,},{name: "奶瓶",stock: 70,sales: 260,},],index: 0, // 当前一级分类的索引};},mounted() {/*** 需求:圆环饼图* 1、每个圆环分为左右两部分,分别为每个商品的库存和销量,销量设置为渐变色* 2、在圆环中心显示该商品名字和销量,设置不同的颜色* 3、每次展示5个产品的圆环图,定时切换展示下一页商品,这里就不写了* 4、随着屏幕的变化,适配标题大小和圆环的半径以及内部标签文字的大小*/this.init();this.getData();// 监听屏幕大小变化window.addEventListener("resize", this.screenResize);// 一进来主动调取屏幕适配this.screenResize();},beforeDestroy() {window.removeEventListener("resize", this.screenResize);},methods: {// 初始化图表init() {this.$echarts.registerTheme("ququ", ququ);this.looppieChart = this.$echarts.init(this.$refs.looppie, "ququ");let initOption = {// 标题title: {text: "▍五个圆环饼图", // ▍ 任意打一个字,调出搜狗输入法卡片,右键单击——表情符号——符号大全left: 40,top: 40,textStyle: {color: "#fff",},},};this.looppieChart.setOption(initOption);},// 获取并处理数据,然后渲染图表getData() {// 五个饼图的圆心位置let positionArr = [["18%", "40%"],["50%", "40%"],["82%", "40%"],["34%", "75%"],["66%", "75%"],];// 五个饼图的渐变色起始颜色let colorArr = [["#4ff778", "#0ba82c"],["#e5dd45", "#e8b11c"],["#e8821c", "#e55445"],["#5052ee", "#ab6ee5"],["#23e5e5", "#2e72bf"],];// 因为有5个饼图,所以series配置项数组有5项数据分别代表每个饼图的数据let seriesArr = this.looppieData.map((item, index) => {return {type: "pie",// radius: [115, 100], // 圆环饼图内外直径的大小center: positionArr[index], // 饼图的位置——正中心// 圆环中间显示的文字标签label: {show: true, // 显示饼图每块区域的名称position: "center", // 标签文字显示在圆环中间color: colorArr[index][0], // 每个饼图的标签文字颜色},labelLine: {show: false, // 隐藏名字和图之间默认的一条线},name: item.name,data: [{name: item.name + "\n" + item.sales, //lable显示的文字内容value: item.sales,itemStyle: {//该区域对应渐变色color: new this.$echarts.graphic.LinearGradient(0, 1, 0, 0, [{ offset: 0, color: colorArr[index][0] },{ offset: 1, color: colorArr[index][1] },]),},},{// name: "库存",value: item.stock,itemStyle: {color: "#666", //该区域对应颜色},},],};});let dataOption = {series: seriesArr,};// 生成图表this.looppieChart.setOption(dataOption);},// 监听屏幕变化——标题大小,圆环半径和标签文字大小screenResize() {this.$nextTick(() => {// 获取图表区域的宽度,作为基准值来设置其他需要动态改变的尺寸let width = this.$refs.looppie.offsetWidth;this.size = (width / 100) * 3.6; // 定义一个基准尺寸let screenOption = {title: {textStyle: {fontSize: this.size,},},// 动态设置圆环的大小和标签文字大小,有五个饼图,所以series数组就有5项series: [{type: "pie", //设置类型是为了第一次加载先执行这个方法radius: [this.size * 3, this.size * 2.5],label: {fontSize: this.size / 1.5,},},{type: "pie",radius: [this.size * 3, this.size * 2.5],label: {fontSize: this.size / 1.5,},},{type: "pie",radius: [this.size * 3, this.size * 2.5],label: {fontSize: this.size / 1.5,},},{type: "pie",radius: [this.size * 3, this.size * 2.5],label: {fontSize: this.size / 1.5,},},{type: "pie",radius: [this.size * 3, this.size * 2.5],label: {fontSize: this.size / 1.5,},},],};this.looppieChart.setOption(screenOption);// 更新图表this.looppieChart.resize();});},},
};
</script>

http://www.ppmy.cn/news/342665.html

相关文章

echarts——横向柱状图

功能描述 全屏横向柱状图从小到大排序&#xff0c;每次显示5条&#xff0c;每3秒切换循环显示鼠标移入停止切换&#xff0c;鼠标移出继续切换 柱状图组件源码 <template><div class"w100 h100"><div ref"bar" class"w100 h100"…

vue-video-player 点击播放自动全屏及安卓端样式兼容问题

相关借鉴链接&#xff1a;https://blog.csdn.net/imwkey/article/details/89355599 <template><div class"w100 bgf pl15 pr15 borBox pt10 pb20 helpProjectDeatil"><p class"color3AF pt18 fz20" style"color: #000000">…

elementUI中el-select增加删除选项按钮

elementUI中el-select删除选项 为el-select设置clearable属性&#xff0c;则可将选择器清空。 需要注意的是&#xff0c;clearable属性仅适用于单选。 <el-selectv-model"keyItem"placeholder"请选择"class"w100"clearable>

欧姆龙FINS通讯命令实例详解

发送连接命令&#xff1a; 46494E530000000C 00000000 00000000 00000003 返回的连接命令&#xff1a;46494E5300000010 00000001 00000000 00000003&#xff08;PC端节点号&#xff09; 00000028&#xff08;PLC端节点号&#xff09; 读W100的命令&#xff1a; 46494E53 00…

简单粗暴PyTorch之优化器

优化器 一、优化器属性与方法二、pytorch中的优化器 一、优化器属性与方法 pytorch的优化器&#xff1a; 管理并更新模型中可学习参数的值&#xff0c;使得模型输出更接近 真实标签 导数&#xff1a;函数在指定坐标轴上的变化率 方向导数&#xff1a;指定方向上的变化率 梯度…

联盛德W100之STM32 SPI扫网DEMO

联盛德W100之STM32 SPI扫网DEMO SPI接线描述 PINSTM32W100&#xff08;SPI_1&#xff09;INTPA2PB09CSPA4PB10CLKPA5PB08MOSIPA7PB11MISOPA6PB12 STM32 UART 接线&#xff08;串口1&#xff09; 波特率 115200&#xff0c;8&#xff0c;N&#xff0c;1&#xff0c;可查看打印…

学生DW网页设计作业成品 HTML+CSS+JS大作业——汽车设备营销企业模板(13页) 静态HTML网页设计模板

HTMLCSSJS大作业——汽车设备营销企业模板(13页) 静态HTML网页设计模板 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日…

小程序简单的登录界面

造轮子系列复制粘贴&#xff0c;不多说 <view class""><view class"logo h400 flex jc-ai-center"><image src"../../assets/images/yh.png"></image></view><view class"ipt-wrap"><view cla…