This article shares the specific code of Vue to implement horizontal beveled bar chart for your reference. The specific content is as follows Result: Implementation code: <template> <div class="Consumption"> <div style="width: 350px; height: 180px" ref="ConsumptionChart" /> </div> </template> <script> import echarts from 'echarts' const myShape = { x: 0, y: 0, width: 10 // Spacing} // Draw the left side const InclinedRoofBar = echarts.graphic.extendShape({ shape: myShape, buildPath: function(ctx, shape) { // Anyone who knows canvas should be able to understand this. shape is passed in from custom const xAxisPoint = shape.xAxisPoint const c0 = [shape.x, shape.y] const c1 = [shape.x + 14, shape.y - 10] const c2 = [xAxisPoint[0], xAxisPoint[1] - 10] const c3 = [xAxisPoint[0], xAxisPoint[1]] ctx .moveTo(c0[0], c0[1]) .lineTo(c1[0], c1[1]) .lineTo(c2[0], c2[1]) .lineTo(c3[0], c3[1]) .closePath() } }) const colors = ['rgba(50, 197, 255, 0.8)', 'rgba(0, 253, 255, 0.8)', 'rgba(255, 235, 0, 0.8)'] const colors = ['rgba(0, 145, 255, 1)', 'rgba(68, 215, 182, 1)', 'rgba(215, 170, 68, 1)'] // Register three surface graphics echarts.graphic.registerShape('InclinedRoofBar', InclinedRoofBar) const defaultOption = { tooltip: { show: true, trigger: 'axis', axisPointer: type: 'shadow' } }, grid: { top: 10, bottom: 30, left: 10, right: 10, containLabel: true }, yAxis: { type: 'category', data: [], axisLine: { show:false }, axisTick: { show:false }, axisLabel: { color(value, index) { return colors[index] }, fontSize: 14 } }, xAxis: type: 'value', axisLine: { show:false }, min: 0, splitLine: { show:false }, axisTick: { show:false }, axisLabel: { show:false }, boundaryGap: ['20%', '20%'] }, series: [ { type: 'custom', name: '', itemStyle: { color: 'rgba(44, 197, 253, 1)' }, renderItem: (params, api) => { const location = api.coord([api.value(0), api.value(1)]) const xlocation = api.coord([0, api.value(1)]) return { type: 'InclinedRoofBar', shape: api, xValue: api.value(0), yValue: api.value(1), x: location[0], y: location[1] + myShape.width, xAxisPoint: [xlocation[0], xlocation[1] + myShape.width] }, style: { fill: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ { offset: 0, color: colors[params.dataIndex] }, { offset: 1, color: colorss[params.dataIndex] } ]) } } }, data: [] }, { type: 'bar', label: { normal: { show: true, position: 'right', fontSize: 14, offset: [15, 0] } }, showBackground: false, barWidth: 14, backgroundStyle: { color: 'rgba(50, 197, 255, 0.1)' }, itemStyle: { color: 'transparent' }, tooltip: { show:false }, data: [] } ] } export default { data() { return { myChart: null } }, mounted() { this.myChart = echarts.init(this.$refs.ConsumptionChart) }, methods: { getOption(seriesData) { const option = defaultOption const { yAxis, series } = option // Process data yAxis.data = ['low', 'middle', 'high'] series[0].data = seriesData series[1].data = seriesData.map((item, index) => Object.assign(item, { label: { color: colorss[index] } })) this.myChart.setOption(option) } } } </script> The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: Detailed tutorial on installing mysql 8.0.20 on CentOS7.8
1. Environmental Preparation The IP address of ea...
The frame and rules attributes of the table tag c...
This article shares the specific code of the js n...
This article example shares the specific code of ...
<div align="center"> <table sty...
1. Build a Docker environment 1. Create a Dockerf...
Three knowledge points: 1. CSS descendant selecto...
Vue routing this.route.push jump page does not re...
First look at the effect: When the mouse moves ov...
I don't know if you have used the frameset at...
When inserting data, I found that I had never con...
Recently, Oracle announced the public availabilit...
By default, the border of the table is 0, and we ...
Table of contents JSON.parse JSON.parse Syntax re...
Software Version Windows: Windows 10 MySQL: mysql...