Vue+echarts realizes stacked bar chart

Vue+echarts realizes stacked bar chart

This article shares the specific code of Vue+echarts to implement stacked bar charts for your reference. The specific content is as follows

echarts-subcomponent

<template>
  <div class="chart" ref="chartEle"></div>
</template>
<script>
  import echarts from "echarts";
  import eventBus from '@/components/event/event-bus'
  export default {
    props: {
      legendData:
        type: Array,
        default: []
      },
      xAxisData: {
        type: Array,
        default: []
      },
      seriesData: {
        type: Array,
        default: []
      }

    },

    data() {
      return {
        echartsObj: null,
      }
    },

    mounted() {
      var that = this
      eventBus.$on("window-resize", target => {
        that.echartsObj && that.echartsObj.resize()
      });
    },

    methods: {
      initCharts() {
        this.echartsObj = echarts.init(this.$refs.chartEle)
        this.setOption()
        // window.onresize = function() {
        // this.echartsObj.resize()
        // }
      },

      resizeChart() {
        this.echartsObj.resize()
      },

      setOption() {
        const that = this
        var option = {
          color: ['#2DC6C8', '#B6A2DD'],
          // tooltip: { trigger: 'item', formatter: "{a} : {c}" },
          tooltip: { },
          //Data view, line chart, restore, save display mark toolbox on the right: {
            feature:
              // dataView: {show: true, readOnly: false},
              // magicType: {show: true, type: ['line', 'bar']},
              // restore: {show: true},
              // saveAsImage: {show: true}
              magicType: {
                show: true,
                type: ["line", "bar"],
                icon:
                  line: "image:///static/images/toolbox_zhexian.png",
                  bar: "image:///static/images/toolbox_zhuzhuangtu.png"
                }
              },
              restore:
                show: true,
                icon: "image:///static/images/toolbox_shuaxin.png"
              },
              saveAsImage: {
                show: true,
                icon: "image:///static/images/toolbox_xiazai.png"
              }
            }
          },
          legend: {
            bottom: '5',
            data: this.legendData
          },
          grid: {
            top: '40'
          },
          xAxis: [
            {
              type: 'category',
              data: this.xAxisData,
              axisLine: { lineStyle: { color: '#7DABB0' }} // x-axis tick mark color}
          ],
          yAxis: [
            {
              type: 'value',
              axisLine: {
                lineStyle: { color: '#7DABB0' } // y-axis color},
              axisTick: {
                lineStyle: { color: '#7DABB0' } // y-axis scale color}
            }
          ],
          series: this.seriesData
        }
        this.echartsObj.setOption(option)
      }
    }
  }
</script>
<style scoped>
  .chart {
    height: 360px;
    width: 100%;
  }
</style>

echarts parent component

<template>
  <div>
    <form-search @onSearch="onSearch"> </form-search>
    <div class="panel orioc-table-panel" slot="center">
      <!-- Chart -->
      <diversification-BarChart
        ref="barCharts"
        :legendData="legendData"
        :seriesData="seriesData"
        :xAxisData="xAxisData"
      ></diversification-BarChart>
      <!-- Table -->

    </div>


  </div>
</template>

<script>
  import FormSearch from '@/components/formSearch/formSearch'
  import eventBus from '@/components/event/event-bus'
  import DiversificationBarChart from '@/components/echarts/diversificationBarChart/index'
  export default {
    name: 'list',
    // Components: { FormSearch, eventBus, DiversificationBarChart },
    data() {
      return {
        legendData: [], // Legend xAxisData: [], // x-axis seriesData: []// Chart data}
    },
    mounted() {
      // Load list this.legendData = ['Automatic alarm', 'Manual alarm']
      this.xAxisData = ['2018-09-02', '2019-02-25', '2019-05-25']
      this.seriesData = [
        {
          name: 'Automatic alarm',
          type: 'bar',
          stack:'111', // stack barMaxWidth: '100', // maximum width of the bar chart data: [20, 30, 40]
        },
        {
          name: 'Manual alarm reception',
          type: 'bar',
          stack:'111', // stack barMaxWidth: '100', // maximum width of the bar chart data: [10, 50, 35]
        }
      ]
      this.$nextTick(() => {
        eventBus.$emit('window-resize')
        this.$refs.barCharts.initCharts()
      })
    },
    methods: {
      onSearch(data) {}
    }
  }
</script>

<style scoped>

</style>

Rendering

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:
  • Vue+Echart realizes three-dimensional column chart
  • Vue uses Echart icon plug-in bar chart
  • Detailed explanation of vue using Echarts to draw a bar chart
  • Vue+Echart bar chart realizes epidemic data statistics
  • Vue echarts realizes horizontal bar chart
  • Vue+echart realizes double column chart
  • Vue implements horizontal beveled bar chart
  • Vue+echarts realizes progress bar histogram
  • Vue uses Echarts to implement a three-dimensional bar chart
  • Vue+ Antv F2 realizes stacked bar chart

<<:  Things to note when migrating MySQL to 8.0 (summary)

>>:  Issues and precautions about setting maxPostSize for Tomcat

Recommend

The connection between JavaScript constructors and prototypes

Table of contents 1. Constructors and prototypes ...

Detailed explanation of how to use zabbix to monitor oracle database

1. Overview Zabbix is ​​a very powerful and most ...

Vue song progress bar sample code

Note that this is not a project created by vue-cl...

Specific usage of fullpage.js full screen scrolling

1.fullpage.js Download address https://github.com...

Tutorial on installing nginx in Linux environment

Table of contents 1. Install the required environ...

Optimizing JavaScript and CSS to improve website performance

<br /> In the first and second parts, we int...

Use Vue3 to implement a component that can be called with js

Table of contents Preface 1. Conventional Vue com...

Detailed example of clearing tablespace fragmentation in MySQL

Detailed example of clearing tablespace fragmenta...

A few front-end practice summaries of Alipay's new homepage

Of course, it also includes some personal experien...

Ajax jquery realizes the refresh effect of a div on the page

The original code is this: <div class='con...

Implementation of Node connection to MySQL query transaction processing

Table of contents Enter the topic mysql add, dele...

How to understand SELinux under Linux

Table of contents 1. Introduction to SELinux 2. B...

Solve the MySQL login 1045 problem under centos

Since the entire application needs to be deployed...