vue项目中使用ElementUI-Table嵌套Echarts柱状图
项目场景:
项目场景:在VUE项目的一个页面中,需要使用Echarts中的柱状图进行数据可视化处理。 要求:每个柱状图的粗细要相等,颜色要自动使用不同颜色,特殊数据要固定黑色。 难点:页面中需要有多个柱状图,类似于表格里嵌套柱状图。 解决办法,使用v-for循环生成柱状图容器,使用v-bind动态绑定柱状图容器id值。
解决思路
按照Echarts的官方文档在项目中引入,使用el-table,通过v-for生成多个柱状图,放在table的列中,每个柱状图的div容器使用v-bind动态绑定id值。
html代码:
<el-table :data="projectList" id="proFunction" style="width: 100%;" max-height="670"> <el-table-column v-for="(value,index) in functionList" :key="index" align=center min-width="230"> <template slot-scope="scope"> <!-- 柱状图放置区域 --> <div :id="scope.row.projectName+_+value.name" style="width:100%;height:200px;border:1px solid skyblue;margin: 0 auto;"></div> </template> </el-table-column> </el-table>
js代码:
import echarts from echarts methods: { //柱状图数据处理和渲染 zhu () { let that = this let option = { } console.time(柱状图绘制) console.log(this.projectList) console.log(this.functionList) //数据处理部分 //柱状图渲染部分 option = { xAxis: { type: category, data: deptName,//横坐标名称集合 }, yAxis: { type: value }, series: [ { data: deptUserNum,//纵坐标数据集 type: bar, barWidth: 15,//柱子宽度 itemStyle: { normal: { label: { show: true, //开启数值显示 position: top, //在上方显示 textStyle: { //数值样式 color: black, fontSize: 16 } }, color: function (params) { // 定义颜色集合 var colorList = [ #C6E579, #B5C334, #FCCE10, #E87C25, #27727B, #FE8463, #9BCA63, #FAD860, #F3A43B, #60C0DD, #D7504B, #C1232B, #F4E001, #F0805A, #26C0C0 ]; //根据数据量返回颜色列表 if (params) { if ($.inArray(params.name, that.Bgs) == -1) { return colorList[params.dataIndex] } else { //特殊情况,如果横坐标数据名在特殊集合中,统一使用黑色渲染 return black } } }, } }, markLine: { // 设置平均线 data: [ { type: "average", name: "我是平均值", color: "#baf" } ] }, } ] }; //渲染 myChart.setOption(option) }
效果展示:部分数据涉及公司保密,已打码