在开发过程中我们常常需要,在一个页面中使用相同的图表来展示同级别的多个事物(如:同级别的多个不同id的仓库、同级别的多个不同id的设备等)。
上图效果实现代码:
<template> <div class="projectCost"> <div class="container"> <div class="wrapper" v-for="(item,index) in list" :key="index"> <div class="roseChart"></div> // 使用class,不是id </div> </div> </div> </template> <script> export default { data(){ return { list:[ // 假数据 { id:1, price:{ name:'项目一', resData:[ {name:'订购费用',value:12}, {name:'饲养费用',value:18}, {name:'实验费用',value:8}, {name:'其他费用',value:10}, ] } },{ id:2, price:{ name:'项目二', resData:[ {name:'订购费用',value:18}, {name:'饲养费用',value:10}, {name:'实验费用',value:20}, {name:'其他费用',value:9}, ] } } ] } }, methods:{ drawRose(){ var echarts = require("echarts"); var roseCharts = document.getElementsByClassName('roseChart'); // 对应地使用ByClassName for(var i = 0;i < roseCharts.length;i++ ){ // 通过for循环,在相同class的dom内绘制元素 var myChart = echarts.init(roseCharts[i]); myChart.setOption({ color: ["#4DFFFD", "#7B3FF6", "#1F6DFE", "#34A6FE"], title: { text: this.list[i].price.name, left: '70', top: 5, textStyle: { color: '#4DFFFD', fontSize: 14, } }, tooltip: { trigger: 'item', formatter: "{b} : {c} ({d}%)" }, legend: { type: "scroll", orient: "vartical", top: "center", right: '0px', itemWidth: 16, itemHeight: 8, itemGap: 16, textStyle: { color: '#FFFFFF', fontSize: 12, }, data: ['订购费用', '饲养费用', '实验费用', '其他费用'] }, polar: { center:['36%','56%'], }, angleAxis: { interval: 3, // 强制设置坐标轴分割间隔 type: 'category', z: 10, axisLine: {show: false}, axisLabel: {show: false}, }, radiusAxis: { min: 10, max: 1000, interval: 200, axisLine: {show: false}, axisLabel: {show: false}, splitLine: { lineStyle: { color: "#2277C3", width: 1, type: "solid" } } }, calculable: true, series: [ { type: 'pie', radius: ["10%", "14%"], center:['36%','56%'], hoverAnimation: false, labelLine: {show: false}, data: [{ value: 0, itemStyle: { normal: { color: "#809DF5" } } }] },{ stack: 'a', type: 'pie', radius: ['20%', '80%'], center:['36%','56%'], roseType: 'area', zlevel:10, label: {show: false}, labelLine: {show: false}, data: this.list[i].price.resData // 渲染每个图表对应的数据 }] }) } } }, mounted(){ this.drawRose() } } </script> <style lang="scss" scoped> .projectCost{ margin-left: 40px; .container{ display: flex; width: 680px; height: 240px; background-size: 100% 100%; // background-image: url('../../../assets/images/projectTest/costDetail.png'); .wrapper{ margin-top: 20px; width: 340px; height:180px; border-right: 1px solid #0B61B3; .roseChart{ width: 260px; height:180px; } } } } </style>
补充知识:echarts 同时控制多个图表的属性值变更
echarts v4.x 版本如何同时控制多个图标的属性值变更
简单理解:
echarts为一个对象形式出现在代码中,通过 Canvas、SVG(4.0+)、VML 的形式渲染图表
实现方法:
echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的图表
需求:
将页面多个图表渲染完成后 选择更新数据或者查看固定时间段区域数据等按钮实现动态的改变echarts的图表数据表现。
分析:
1、首先对于echarts而言,每个图表都是一个单独的echarts对象,那么我们只需要将每个对象获取到并通过getOption()函数获取到每个对象的属性,并对其赋值。
2、然后通过setOption(echartsObject)方法对其执行渲染就可以了(echartsObject为每个echarts对象)。
设计思路:
1、设置一个全局数组用来装入每一个echarts对象。
var myCharts=[];
然后在每个echarts实例化完成后将当前的echarts对象放进myCharts数组中。
function darwChart(id, monitorItemData, monitorItemDecimal,oiltime) { ... var chartid = "chart_" + id; chartid = echarts.init(dom); chartid.setOption(option={...}) myCharts.push(chartid); ... }
注:这里说明id为每个表加载的时候获取的数据id,本人通过这个id来区分不同的echarts对象,如果设置多个方法互相不关联,可以不用这么写,这里自由分配,主要理解实现思想。
2、然后外部按钮触发事件的方法:循环赋值实现,这里就简单了。ok,祝你成功。
function gettimeradio(){ var rr = $('input:radio[name="r2"]:checked').attr('id'); Xmin = getDateTime(rr); Xmax = getDateTime(0); myCharts = Array.from(new Set(myCharts)); myCharts.forEach(data=>{ var chart = data.getOption(); chart.xAxis[0].min =Xmin ; chart.xAxis[0].max =Xmax ; data.setOption(chart); }) }
以上这篇在Vue 中实现循环渲染多个相同echarts图表就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】