利用Echarts如何实现多段圆环图
作者:NorthMaple 时间:2024-04-28 09:36:22
前言
开发某款app时,产品给的UI原型图上有个分为三段的圆环图,本来以为使用echarts应该会很好做的,主要考虑移动端echarts的兼容问题就好了,但是实际操作后发现还是没法做到完美的还原,最终找了很多类似的案例,加上自己的一些调整实现了.
原型示例
第一眼看的时候以为用echarts里的饼图做一些修改可以达到,但是效果都不太好,首先是每段弧段的边缘有一个圆角的处理,其次是弧度的宽度是不同,灰色最细,红色次之,绿色是最宽的.
第二时间又看到了一些圆环进度条的示例
本来以为这种图应该可以实现了,但去看了示例的代码发现这种图是echarts里的pie组件的一个叠加,一般叠加一次,有两个区域效果还算可以,但是3个区域的效果在不设置圆弧的宽度时还算可以接受,但是设置了宽度后总会有一些叠加后超出不太美观的问题.
完美实现
最终在玫瑰图的网站上找到一个比较复杂的实现,通过修改各项配置基本完美的使用ehcarts实现了这个图形. 首先是echarts的一个option的配置代码,为了方便将series与option做了一个分离
const colorDataHandle = (data, total, width = 375) => {
let num = 0
let option = {
angleAxis: {
axisLine: {
show: false,
},
axisLabel: {
show: false,
},
splitLine: {
show: false,
},
axisTick: {
show: false,
},
min: 'dataMin',
max: 'dataMax',
startAngle: 135,
},
radiusAxis: {
type: 'category',
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisLabel: {
show: false,
},
},
polar: {
radius: '95%'
},
series: []
}
// option是对传入的数据的一个处理
const options = data.map((item, index) => {
num += item
const a = {
type: 'bar',
data: [0, 0, 0, num],
coordinateSystem: 'polar',
z: 9999 - index,
roundCap: true,
color: colors[index],
barGap: '-100%',
// barWidth: '30%',
itemStyle: {
// 控制弧的宽,弧的宽的控制并没有做太多的情况判断,简单的区分了一下
borderWidth: index === 0 ? 4 : index === 1 ? 2 : 0,
// shadowBlur: 5,
// color: 'transparent',
borderColor: colors[index],
shadowColor: colors[index],
},
}
return a
})
option.series = options
return option
}
然后是对3种颜色区域的一个处理
const colors = [
{
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: '#1DBC3F', // 0% 处的颜色
},
{
offset: 1,
color: '#1DBC3F', // 100% 处的颜色
},
],
},
{
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: '#CB3939', // 0% 处的颜色
},
{
offset: 1,
color: '#CB3939', // 100% 处的颜色
},
],
},
{
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: '#C0C0C0', // 0% 处的颜色
},
{
offset: 1,
color: '#C0C0C0', // 100% 处的颜色
},
],
},
];
这里是灵活使用了echarts type为linear的组件,具体的一个配置项是怎么实现我并没有深入探究.
效果图
最终实现的一个效果图在真机上的展示
既保证了每段弧的首尾的圆角的问题,也实现了每段弧宽的增加
来源:https://juejin.cn/post/7070127155778158628
标签:echarts,圆环图
0
投稿
猜你喜欢
将pandas.dataframe的数据写入到文件中的方法
2022-07-13 14:56:38
SQL Server时间戳功能与用法详解
2024-01-27 23:14:20
触手生春【4.13】CSS中的伪元素选择符
2008-11-11 13:10:00
通过不同的CSS设计字体大小来提高用户体验
2008-12-10 19:17:00
Python读取配置文件(config.ini)以及写入配置文件
2021-01-28 14:02:39
python借助ChatGPT读取.env实现文件配置隔离保障私有数据安全
2022-12-26 17:54:13
js运动动画的八个知识点
2024-06-07 15:27:25
使用 OpenCV-Python 识别答题卡判卷功能
2023-02-03 07:01:43
python构造IP报文实例
2023-07-10 20:40:51
Python学习之configparser模块的使用详解
2022-07-21 23:21:25
Bootstrap Table快速完美搭建后台管理系统
2024-05-09 09:48:16
python实现在sqlite动态创建表的方法
2021-08-05 13:54:10
python实现k均值算法示例(k均值聚类算法)
2021-04-24 20:27:39
将SQL Server中所有表的列信息显示出来
2009-01-08 16:27:00
SQL Server数据表压缩
2024-01-25 21:47:12
python 获取谷歌浏览器保存的密码
2022-05-21 21:39:49
Python OpenCV实现视频追踪
2021-09-29 23:04:27
如何解决tensorflow恢复模型的特定值时出错
2023-12-22 14:59:36
Python 发送SMTP邮件的简单教程
2021-04-27 00:26:51
python numpy库之如何使用matpotlib库绘图
2023-02-07 22:22:24