// 数据1 const data1 = 93.3 // 类目1 const Category1 = '类目1' // 数据2 const data2 = 115.5 // 类目2 const Category2 = '类目2' // 数据3 const data3 = 140.3 // 类目3 const Category3 = '类目3' // 饼图满设为 150 分钟 const total = 150 option = { backgroundColor: '#20252E', color: [{ type: 'linear', x: 0, y: 0, x2: 1, y2: 1, colorStops: [{ offset: 0, color: '#FC8F0F00' }, { offset: 0.5, color: '#FC8F0F80', // 这个颜色应与背景线保持一致 }, { offset: 1, color: '#FDA946' }], global: false }], tooltip: { show: true, }, series: [{ center: ["50%", "50%"], // 仪表的位置 name: "基础刻度", // 仪表的名字 type: "gauge", // 统计图类型为仪表 splitNumber: 12, // 刻度数量 startAngle: 90, // 开始刻度的角度 endAngle: -269.9, // 结束刻度的角度 radius: '22%', // 仪表盘轴线 axisLine: { show: false, }, // 仪表盘上的数据 axisLabel: { show: false, }, // 表盘上的指针 pointer: { show: false }, // 刻度标签。 axisTick: { show: true, splitNumber: 5, // 刻度的段落数 lineStyle: { color: '#FBA53F', // width: 2, // 刻度的宽度 shadowColor: '#67FFFC', shadowBlur: 2 }, length: 8 // 刻度的长度 }, // 分隔线样式 splitLine: { show: true, length: -5, lineStyle: { color: "#FBA53F", // width: 4, shadowColor: '#F69829', shadowBlur: 4, } }, // 表盘中心的文字 detail: { show: false, }, }, { center: ["50%", "50%"], // 仪表的位置 name: "分割线覆盖", // 仪表的名字 type: "gauge", // 统计图类型为仪表 splitNumber: 12, // 刻度数量 startAngle: 90, // 开始刻度的角度 endAngle: -269.9, // 结束刻度的角度 radius: '22%', // 仪表盘轴线 axisLine: { show: false, }, // 仪表盘上的数据 axisLabel: { show: false, }, // 表盘上的指针 pointer: { show: false }, // 刻度标签。 axisTick: { show: false, }, // 分隔线样式 splitLine: { show: true, /* * 这个值是 8 + 5 得出的, 基础分割线长度为 -5 (向外延伸 5), 而刻度长度为 8, 因此只需要向内延伸 8 + 5 就能保持对称 * 向外延伸是从外轮廓开始计算长度, 而向内延伸同样是外轮廓开始计算, 因此要加上刻度的长度 */ length: 13, lineStyle: { color: "#FBA53F", shadowColor: '#F69829', shadowBlur: 4, } }, // 表盘中心的文字 detail: { show: false, }, }, { type: 'pie', name: '背景线A', radius: ['5%', '6%'], data: [100], silent: true, label: { show: false }, itemStyle: { color: '#E5A150' }, }, { type: 'pie', name: '背景线B', radius: ['10%', '11%'], data: [100], silent: true, label: { show: false }, itemStyle: { color: '#E5A150' }, }, { type: 'pie', name: '背景线C', radius: ['15%', '16%'], data: [100], silent: true, label: { show: false }, itemStyle: { color: '#E5A150' }, }, { type: 'pie', radius: ['5%', '6%'], center: ["50%", "50%"], label: { show: true, formatter: '{c}', color: '#fff', fontSize: 12, position: 'inside' }, labelLine: { show: false }, hoverOffset: 2, data: [{ value: data3, name: Category3, itemStyle: { borderWidth: 6, borderColor: { type: 'linear', x: 0, y: 0, x2: 1, y2: 1, colorStops: [{ offset: 0, color: '#FC8F0F00' }, { offset: 0.9, color: '#FC8F0F50', }, { offset: 1, color: '#FDA946' }], global: false }, }, tooltip: { formatter: '{b}:{c}分', }, }, { value: total - data3, // total 是三项的总和 name: 'gap', itemStyle: { color: "rgba(0, 0, 0, 0)", }, label: { show: false }, tooltip: { show: false, }, }, ], }, { type: 'pie', radius: ['10%', '11%'], center: ["50%", "50%"], label: { show: true, formatter: '{c}', color: '#fff', fontSize: 12, position: 'inside' }, labelLine: { show: false }, hoverOffset: 2, data: [{ value: data2, name: Category2, itemStyle: { borderWidth: 6, borderColor: { type: 'linear', x: 0, y: 0, x2: 1, y2: 1, colorStops: [{ offset: 0, color: '#FC8F0F00' }, { offset: 0.9, color: '#FC8F0F50', }, { offset: 1, color: '#FDA946' }], global: false }, }, tooltip: { formatter: '{b}:{c}分', }, }, { value: total - data2, // total 是三项的总和 name: 'gap', itemStyle: { color: "rgba(0, 0, 0, 0)", }, label: { show: false }, tooltip: { show: false, }, }, ], }, { type: 'pie', radius: ['15%', '16%'], center: ["50%", "50%"], label: { show: true, formatter: '{c}', color: '#fff', fontSize: 12, position: 'inside' }, labelLine: { show: false }, hoverOffset: 2, data: [{ value: data1, name: Category1, itemStyle: { borderWidth: 6, borderColor: { type: 'linear', x: 0, y: 0, x2: 1, y2: 1, colorStops: [{ offset: 0, color: '#FC8F0F00' }, { offset: 0.9, color: '#FC8F0F50', }, { offset: 1, color: '#FDA946' }], global: false }, }, tooltip: { formatter: '{b}:{c}分', }, }, { value: total - data1, // total 是三项的总和 name: 'gap', itemStyle: { color: "rgba(0, 0, 0, 0)", }, label: { show: false }, tooltip: { show: false, }, }, ], }, ], yAxis: [{ type: 'category', // inverse: true, z: 2, axisLine: { show: false }, axisTick: { show: false }, axisLabel: { interval: 0, textStyle: { color: "#D8FDF9", fontSize: 12, }, }, data: [Category3, Category2, Category1], }], xAxis: [{ show: false }], // 这里的 grid 主要是对 y 轴进行定位 grid: { top: '40%', // 这里通过同时指定 top 和 bottom 来挤压 y 轴 label 的高度, 这样间接调整了 label 间距和高度 bottom: '50%', left: "52%", containLabel: false }, }