加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

用Echarts制作多段圆环图的步骤及优化

发布时间:2023-08-08 11:17:06 所属栏目:语言 来源:
导读:今天就跟大家聊聊有关“用Echarts制作多段圆环图的过程及优化”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“用Echarts制作多段圆环图的过程

今天就跟大家聊聊有关“用Echarts制作多段圆环图的过程及优化”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“用Echarts制作多段圆环图的过程及优化”文章能对大家有帮助。

开发某款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的组件,具体的一个配置项是怎么实现我并没有深入探究.

echarts这个库确实博大进深,同时对一些没有做过的需求的评估需要谨慎再谨慎,我看到这个图形时觉得用echarts应该就ok了,但实际在开发的过程中,坑还是很多,同样机会也在不经意中就出现了,机会还是留给有准备的人的,如果想着图形太复杂随随便便用个环形图就去实现可能在页面的呈现上也没有这么好的效果了.

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章