echarts堆叠柱状图
时间:2021-09-06
本文章向大家介绍echarts堆叠柱状图,主要包括echarts堆叠柱状图使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近写了一个echarts堆叠柱状图页面,因为经验不是很多,写个博客记录一下
先贴 option 配置项
this.option = {
tooltip: {
trigger: "axis",
},
grid: {
width: "1300px",
},
xAxis: {
show: true,
data: this.filterRoadName,//x轴标签列表
splitLine: {
show: false,
},
axisTick: {
// show:false,
length: 25 // x轴分割竖线的长度
}
},
yAxis: {
max: 100,// 设置最大值是多少 显示100%
splitNumber: 10,// 设置分几段显示
splitLine: {
show: true,
},
axisTick: {
show: false
},
axisLabel: {
show: true,
interval: 'auto',
formatter: '{value} %',//显示100%
},
},
series: [{
name: '0-1年',
type: 'bar',
stack: '使用情况',//相同的stack开启堆叠
// data: [60, 20, 36, 10, 10, 20],
data: this.initData('year01Length'),
barWidth: 50,//柱子宽度
barGap: '0%',/*多个并排柱子设置柱子之间的间距*/
barCategoryGap: '0%',/*多个并排柱子设置柱子之间的间距*/
itemStyle: {
normal: { color: "#5b9bd5" },
}
}, {
name: '1-2年',
type: 'bar',
stack: '使用情况',//相同的stack开启堆叠
data: this.initData('year12Length'),
barWidth: 50,//柱子宽度
itemStyle: {
normal: { color: "#ed7d31" },
}
}, {
name: '2-3年',
type: 'bar',
stack: '使用情况',//相同的stack开启堆叠
data: this.initData('year23Length'),
barWidth: 50,//柱子宽度
itemStyle: {
normal: { color: "#a5a5a5" },
}
}, {
name: '3-4年',
type: 'bar',
stack: '使用情况',//相同的stack开启堆叠
data: this.initData('year34Length'),
barWidth: 50,//柱子宽度
itemStyle: {
normal: { color: "#ffbb00" },
}
}]
}
为实现等高的堆叠图,需要对数据进行处理
- 参考 https://blog.csdn.net/qq_16416993/article/details/108118443
this.initData('year12Length') 返回一个数组 里面的每个元素是数据里每个对象的year12Length的值相对于>3年以下总和的百分比
代码
// 初始化柱状图数据 计算每一个val在数据中和totalLength的百分比
initData (val) {
var serie = []
this.data.forEach((item, index) => {
let num = item[val]
let total = 0
let arr = [item.year01Length, item.year12Length, item.year23Length, item.year34Length]
let arr1 = arr.filter(item => {
if (item !== 'null') {
return item
}
})
arr1.forEach(item => {
total += parseFloat(item)
})
// // 计算占比
var numcount = this.Percentage(num, parseFloat(total.toFixed(3)))
serie.push(numcount)
})
return serie
},
//计算两者占比方法
Percentage (num, total) {
return (Math.round(num / total * 10000) / 100.00)// 小数点后两位百分比
},
// 初始化表格数据
initTableData () {
let tableArr = []
for (let i = 0; i <= 3; i++) {
let obj = {}
let str = ('year' + i) + (i + 1 + 'Length')
obj.header = str
this.data.forEach((item, index) => {
obj[item.roadCode] = item[str]
})
tableArr.unshift(obj)
}
this.tableData = tableArr
},
实现底部表格参考
因为实现起来难度较大 所以采用的是elementui的table组件 通过给定option配置项grid:{width:1500px}一个固定的宽度结合柱子的个数能够动态的计算出x轴分隔的宽度同时指定给表格的宽度结合定位调整表格的位置,大体上能实现这种效果
原文地址:https://www.cnblogs.com/whh666/p/15235676.html
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例
- js 函数柯里化(Currying)
- GPS数据Python解析及地图可视化
- 文稿:Ant Design从无到有,带你体悟大厂前端开发范式
- 在React中实现和Vue一样舒适的keep-alive
- uniapp获取接口数据,渲染在picker选择器里面
- 我们是这样一步一步实现分布式锁的
- 缓存并发神技,如何通过双 key 来解决缓存并发问题?
- LRU缓存淘汰算法实现方案,这次没人再说你不会开发
- JVM技术总结之三——类加载机制
- 为什么你每次被问到HashMap底层原理都一知半解,搞定它
- 要想精通java,你必须得知道java的内存模型,不忽悠
- java类加载机制,再也不怕面试官的刁难
- 前端科普系列(4):Babel —— 把 ES6 送上天的通天塔
- JVM技术总结之五——JVM逃逸分析
- React源码解读【二】更新创建