html 圆环实现多种颜色,Echart饼图实现(圆环图)+状态颜色控制

本文记录了使用Echarts实现圆环图以及根据任务状态动态分配颜色的过程。通过获取任务状态数据,利用Echarts的饼图类型和自定义函数statusColorHandle动态设置颜色,展示任务总量和各状态占比。示例代码包含详细的注释,可供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做项目遇到了圆环图以及对于图例颜色值的处理,这里做一个记录,分享给大家。

UI图长这样:

ZbaQBz.png

HTML

其中,resize-chart是封装的自适应组件

JS

initTaskChart() {

getTaskStatus({ type: this.taskTimeType }).then(res => {

console.log('任务状态', res)

if (res) {

const color = [

'#999999',

'#00cce2',

'#9962ff',

'#27dca1',

'#e9e536',

'',

'#1cbe6b',

'#f8a639',

'#f868b9',

'#4a8dfd',

'#f45151'

]

let taskStateList = JSON.parse(JSON.stringify(res))

let taskStateData = []

let taskStatelegendData = []

let taskTotal = 0

for (const item of taskStateList) {

taskTotal += item.count

taskStateData.push({

name: this.taskStateArr[item.state],

value: item.count,

itemStyle: {

normal: { color: this.statusColorHandle(item.state, color) }

}

})

taskStatelegendData.push({

name: this.taskStateArr[item.state],

value: item.count,

textStyle: {

normal: { color: this.statusColorHandle(item.state, color) }

}

})

}

this.taskChart = echarts.init(document.getElementById('taskChart'))

this.taskChart.setOption(

{

title: {

text: taskTotal === 0 ? '' : taskTotal,//主要是为了处理没有数据时

subtext: taskTotal !== 0 ? '任务总量' : '',

x: 'center',

y: 'center',

textAlign: 'center',

itemGap: 5, //主副标题之间的间距

top: '38%',

left: '28%',

// 标题

textStyle: {

fontFamily: 'PingFangSC-Medium',

fontWeight: 'normal',

fontSize: 20,

color: '#333333'

},

// 副标题

subtextStyle: {

fontWeight: 'normal',

fontSize: 14,

color: '#333333'

}

},

legend: {

type: 'scroll',

icon: 'circle',

orient: 'vertical',

y: 'center',

right: '5%',

itemWidth: 5,

itemHeight: 5,

data: taskStatelegendData,

// 使用回调函数

formatter: function(name) {

let count, percent

for (const item of taskStatelegendData) {

if (item.name === name) {

count = item.value

percent = ((item.value / taskTotal) * 100).toFixed(2)

}

}

let arr = [

'{a|' + name + '}',

'{b|' + count + '}',

'{c|' + percent + '}%'

]

return arr.join('')

},

textStyle: {

rich: {

a: {

fontSize: 12,

width: 50,

color: 'rgba(51, 51, 51, 0.6)'

},

b: {

fontSize: 12,

width: 40,

color: '#333'

},

c: {

fontSize: 12,

width: 38,

color: '#333'

}

}

}

},

tooltip: {

trigger: 'item',

formatter: '{a}
{b} : {c} ({d}%)'

},

series: [

{

name: '任务状态',

type: 'pie',

radius: ['40%', '55%'], // 第一项是内半径,第二项是外半径,内半径为0就是真的饼,不是环形

center: ['30%', '50%'], // 位置

label: {

normal: {

show: false, // 是否显示标签[ default: false ]

position: 'outside', // 标签的位置。'outside'饼图扇区外侧,通过视觉引导线连到相应的扇区。'inside','inner' 同 'inside',饼图扇区内部。'center'在饼图中心位置。

formatter: function(params) {

return (

'{c|' +

params.value +

'} {d|' +

params.percent +

'%}\n{b|' +

params.name +

'}'

)

},

fontFamily: 'PingFangSC-Regular',

lineHeight: 20,

padding: [0, -55],

rich: {

c: {

color: '#333333',

fontSize: 14,

align: 'left',

padding: [0, 0, 0, 10]

},

d: {

color: '#333333',

align: 'left',

fontSize: 14

},

b: {

color: 'rgba(51, 51, 51, 0.6)',

fontSize: 14,

align: 'left',

padding: [0, 0, 0, 10]

}

}

}

},

labelLine: {

// 标签的视觉引导线样式,在 label 位置 设置为'outside'的时候会显示视觉引导线。

normal: {

show: false, // 是否显示视觉引导线。

length: 20, // 在 label 位置 设置为'outside'的时候会显示视觉引导线。

length2: 40, // 视觉引导项第二段的长度。

lineStyle: {

// 视觉引导线的样式

//color: '#000',

//width: 1

}

}

},

data: taskStateData,

itemStyle: {

emphasis: {

shadowBlur: 10,

shadowOffsetX: 0,

shadowColor: 'rgba(0, 0, 0, 0.5)'

}

}

}

]

},

true //这个参数有它的作用

)

}

this.taskLoading = false

})

}

其中,用到了一个函数statusColorHandle,这个是根据具体的状态分配颜色值的,这里做了封装:

statusColorHandle(state, colorArr) {

state = ~~state

return colorArr[state % colorArr.length]

},

这是其中一个,另外一个基本类似,下面是实现的效果图:

nMNnI3.png

代码里添加了很多注释,方便自己查阅,分享给大家,希望大家在用到的时候遇到问题了可以作为参考。

作者:阿星

安装Docker安装插件,可以按照以下步骤进行操作: 1. 首先,安装Docker。可以按照官方文档提供的步骤进行安装,或者使用适合您操作系统的包管理器进行安装。 2. 安装Docker Compose插件。可以使用以下方法安装: 2.1 下载指定版本的docker-compose文件: curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 2.2 赋予docker-compose文件执行权限: chmod +x /usr/local/bin/docker-compose 2.3 验证安装是否成功: docker-compose --version 3. 在安装插件之前,可以测试端口是否已被占用,以避免编排过程中出错。可以使用以下命令安装netstat并查看端口号是否被占用: yum -y install net-tools netstat -npl | grep 3306 现在,您已经安装Docker安装Docker Compose插件,可以继续进行其他操作,例如上传docker-compose.yml文件到服务器,并在服务器上安装MySQL容器。可以参考Docker的官方文档或其他资源来了解如何使用DockerDocker Compose进行容器的安装和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Docker安装docker-compose插件](https://blog.youkuaiyun.com/qq_50661854/article/details/124453329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Docker安装MySQL docker安装mysql 完整详细教程](https://blog.youkuaiyun.com/qq_40739917/article/details/130891879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值