<template> <Echart ref="chart" :options="option" height="100%" width="100%" /> </template> <script> /** * @author 王晓颖 * @date 2020/08/19 * @Description 横向柱状图 * @props 数据格式:{ * id: 'traffic_govern_line_id', legend:['近一周日均车位占用率','近一周日均车位停车次数'], // 可不传 xAxisData:['周一','周二','周三','周四','周五','周六','周日'], axisData: [ {name:'近一周日均车位占用率',data:[120, 252, 101, 134, 290, 230, 110],color:'58,55,194'}, {name:'近一周日均车位停车次数',data:[120, 222, 191, 234, 250, 200, 310],color:'109,202,23'}, ] } * */ import Echart from "./../index"; export default { name: "verticalBarChart", components: { Echart }, props: { unit: { // 单位 type: String, default: "", }, colors: { // 颜色 type: Array, default: () => { return ["#01b4ff", "#0337ff"]; }, }, axisLineColor: { // 轴线颜色 type: String, default: "#101d5d", }, fontColor: { // 轴线上文字颜色 type: String, default: "#000fff", }, labelColor: { // 图形上文本标签颜色 type: String, default: "#47c8b2", }, seriesData: { // 数据 type: Array, default: () => { return []; }, }, yAxisData: { // X轴数据 type: Array, default: () => { return []; }, }, }, data() { return { curWidth: this.width, curHeight: this.height, option: { grid: { left: 10, right: 30, bottom: 5, top: 30, containLabel: true, }, tooltip: { trigger: "", //悬浮提示框不显示 }, xAxis: [ { type: "value", show: false, boundaryGap: false, data: [], boundaryGap: [0, 0], position: "top", axisLine: { lineStyle: { color: this.axisLineColor, // 轴线的颜色 }, }, axisLabel: { color: this.fontColor, // X轴名称颜色 fontSize: 14, }, }, ], yAxis: [ { name: this.unit, type: "category", // offset:-100,// 调整y轴文字位置 // nameLocation:'start', // offset:-20, data:[], //y轴显示内容 show: true, color: "#000", nameTextStyle: { color: "#000", fontSize: 14, verticalAlign: "middle", }, max: function (value) { return value.max; }, minIntermal: 1, axisLine: { show: false, }, axisLabel: { color: this.fontColor, // inside:true, fontSize: 12, formatter: function (value, index) { //时候后用于修改y轴显示内容 return value + (index + 1); }, }, }, ], series: [], }, }; }, watch: { yAxisData(newVal) { this.option.yAxis[0].data = newVal; // this.refreshEchart(); }, seriesData: { handler(newVal) { const newSeries = []; for (const item of newVal) { const series = { name: item.name, type: "bar", barWidth: 10, showBackground: true, backgroundStyle:{ color: 'rgba(180, 180, 180, 0.1)', // borderWidth:2, // borderColor:'#000' }, itemStyle: { normal: { label: { show: true, //显示文本 position: ["90%", "-110%"], //数据值位置 textStyle: { color: "#000", fontSize: "14", }, }, }, }, data: item.data, }; newSeries.push(series); } this.$set(this.option, "series", newSeries); // this.refreshChart(); }, deep: true, }, }, // mounted() { // this.refreshChart(); // }, // methods: { // refreshChart() { // this.unit && (this.option.yAxis[0].name = this.unit); // if (this.xAxisData.length) { // this.option.legend.data = this.legend; // this.option.xAxis[0].data = this.xAxisData; // const newSeries = []; // for (const item of this.seriesData) { // const series = { // name: item.name, // type: "bar", // itemStyle: { // color: `rgb(${item.color})`, // }, // lineStyle: { // width: 1, // }, // areaStyle: { // color: new this.$echarts.graphic.LinearGradient( // 0, // 0, // 0, // 1, // 变化度 //三种由深及浅的颜色 // [ // { // offset: 0.1, // color: `rgba(${item.color},.6)`, // }, // { // offset: 1, // color: "rgba(0,0,0,.0)", // }, // ] // ), // }, // data: item.data, // }; // newSeries.push(series); // } // this.$set(this.option, "series", newSeries); // } // }, // }, }; </script> <style scoped> </style>