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

Linux installation apache server configuration process

Prepare the bags Install Check if Apache is alrea...

Comprehensive summary of MYSQL tables

Table of contents 1. Create a table 1.1. Basic sy...

Detailed explanation of Grid layout and Flex layout of display in CSS3

Gird layout has some similarities with Flex layou...

Nginx configuration file detailed explanation and optimization suggestions guide

Table of contents 1. Overview 2. nginx.conf 1) Co...

Vue implements the frame rate playback of the carousel

This article example shares the specific code of ...

10 Website Usability Tips Everyone Should Know

Let’s not waste any more time and get straight to...

Convert XHTML CSS pages to printer pages

In the past, creating a printer-friendly version ...

Windows 10 installation vmware14 tutorial diagram

Software Download Download software link: https:/...

How to choose and use PNG, JPG, and GIF as web image formats

So which one of these formats, GIF, PNG, and JPG,...

Summary of MySQL InnoDB locks

Table of contents 1. Shared and Exclusive Locks 2...

CSS sample code with search navigation bar

This article shows you how to use CSS to create a...

Example of how to configure multiple virtual hosts in nginx

It is very convenient to configure virtual host v...

An article teaches you how to use js to achieve the barrage effect

Table of contents Create a new html file: Create ...