vue+echarts封装气泡图的方法

 更新时间:2023年05月09日 10:24:41   作者:醒醒打工仔  
这篇文章主要为大家详细介绍了vue+echarts封装气泡图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了vue+echarts封装气泡图的具体代码,供大家参考,具体内容如下

前端可视化封装气泡图

1. html

<template>
  <div class="bubble-chart">
    <div ref="bubbleChart" class="bubble"></div>
  </div>
</template>

2. js

<script>
export default {
  name: "BubbleChart",
  props: {
    rowData: {
      default: () => {
        return [
          {
            name: "员工增长",
            value: -20,
          },
          {
            name: "员工增长",
            value: -38,
          },
          {
            name: "员工增长",
            value: 44,
          },
          {
            name: "员工增长",
            value: 42,
          },
          {
            name: "员工增长",
            value: 35,
          },
          {
            name: "员工增长",
            value: 30,
          },
          {
            name: "员工增长",
            value: -25,
          },
          {
            name: "员工增长",
            value: 20,
          },
          {
            name: "员工增长",
            value: 12,
          },
          {
            name: "员工增长",
            value: 15,
          },
          {
            name: "营收增长",
            value: 15,
          },
          {
            name: "营收增长",
            value: -15,
          },
          {
            name: "营收增长",
            value: 30,
          },
          {
            name: "营收增长",
            value: -21,
          },
          {
            name: "营收增长",
            value: -22,
          },
          {
            name: "营收增长",
            value: 23,
          },
          {
            name: "营收增长",
            value: 8,
          },
          {
            name: "营收增长",
            value: 56,
          },
          {
            name: "营收增长",
            value: 31,
          },
          {
            name: "营收增长",
            value: -3,
          },
        ];
      },
    },
    color: {
      default: () => {
        return "#50BCD8";
      },
    },
    legends: {
      type: Array,
      default: () => {
        return ["员工增长", "营收增长"];
      },
    },
  },
  data() {
    return {
      chartInstance: null,
      staffData: [],
      revenueData: [],
      dataList: [],
    };
  },
  mounted() {
    this.initChart();
  },
  methods: {
    // 初始化实例
    initChart() {
      //  挂在 DOM
      this.chartInstance = this.$echarts.init(this.$refs.bubbleChart);
      //  初始化配置项
      let option = {
        grid: {
          left: "0%",
          right: "2%",
          bottom: "3%",
          containLabel: true,
        },
        xAxis: {
          name: this.legends[1],
           nameTextStyle: {
            padding: [40, 65, 0, -65]    // 四个数字分别为上右下左与原位置距离
        },
          type: "value",
          scale: true,
          axisLabel: {
            formatter: "{value}",
          },
          splitLine: {
            show: false,
          },
          axisLine: {
            lineStyle: {
              color: "#BFEBFF",
            },
          },
        },
        yAxis: {
          name: this.legends[0],
          type: "value",
          scale: true,
          axisLabel: {
            formatter: "{value}",
          },
          splitLine: {
            show: false,
          },
          axisLine: {
            lineStyle: {
              color: "#BFEBFF",
            },
          },
        },
        series: [],
      };

      this.setSeries(option);
      this.setOption(option);
    },
    //  设置series
    setSeries(option) {
      this.rowData.forEach((e) => {
        if (e.name === this.legends[0]) {
          this.staffData.push(e);
        } else {
          this.revenueData.push(e);
        }
      });
      this.staffData.forEach((e, i) => {
        this.revenueData.forEach((item, index) => {
          if (i === index) {
            this.dataList.push([e.value, item.value]);
          }
        });
      });
      let _series = {
        data: this.dataList,
        type: "scatter",
        symbolSize: function(data) {
          return (Math.abs(data[1]) + Math.abs(data[0])) / 2;
        },
        label: {
          show: false,
        },
        itemStyle: {
          normal: {
            color: this.color,
          },
        },
      };
      option.series.push(_series);
    },
    //  设置图表
    setOption(option) {
      this.chartInstance.setOption(option);
    },
  },
};
</script>

3. css

<style lang="less" scoped>
.bubble-chart {
  width: 100%;
  height: 100%;

  .bubble {
    width: 100%;
    height: 100%;
  }
}
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • vue使用watch 观察路由变化,重新获取内容

    vue使用watch 观察路由变化,重新获取内容

    本篇文章主要介绍了vue使用watch 观察路由变化,重新获取内容 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • vue中改变了vuex数据视图不更新,也监听不到的原因及解决

    vue中改变了vuex数据视图不更新,也监听不到的原因及解决

    这篇文章主要介绍了vue中改变了vuex数据视图不更新,也监听不到的原因及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Vue数据驱动模拟实现2

    Vue数据驱动模拟实现2

    这篇文章主要介绍了Vue数据驱动模拟实现的相关资料,实现Observer构造函数,监听已有数据data中的所有属性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Vue+Bootstrap实现简易学生管理系统

    Vue+Bootstrap实现简易学生管理系统

    这篇文章主要为大家详细介绍了Vue+Bootstrap实现简易学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • vue  自定义组件实现通讯录功能

    vue 自定义组件实现通讯录功能

    本文通过实例代码给介绍了vue使用自定义组件实现通讯录功能,需要的朋友可以参考下
    2018-09-09
  • vue将文件/图片批量打包下载zip的教程

    vue将文件/图片批量打包下载zip的教程

    这篇文章主要介绍了vue将文件/图片批量打包下载zip的教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • vue3.2 reactive函数问题小结

    vue3.2 reactive函数问题小结

    reactive用来包装一个对象,使其每个对象属性都具有响应性(也就是深层次响应式),这篇文章主要介绍了vue3.2 reactive函数注意点及问题小结,需要的朋友可以参考下
    2022-12-12
  • vue 部署上线清除浏览器缓存的方式

    vue 部署上线清除浏览器缓存的方式

    这篇文章主要介绍了vue 部署上线清除浏览器缓存的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue3页面跳转的两种方式

    vue3页面跳转的两种方式

    vue3的页面跳转有两种方式,第一种是标签内跳转,第二种是编程式路由导航,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2023-05-05
  • vue+element-plus上传图片及回显问题及数量限制

    vue+element-plus上传图片及回显问题及数量限制

    本文主要介绍了vue+element-plus上传图片及回显问题及数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04

最新评论