当前位置:首页 > VUE

vue实现散点图源码

2026-03-29 15:28:59VUE

以下是一个基于 Vue 和 ECharts 实现散点图的完整源码示例,包含配置和交互逻辑:

安装依赖

确保已安装 Vue 和 ECharts:

vue实现散点图源码

npm install vue echarts

基础实现代码

<template>
  <div ref="scatterChart" style="width: 600px; height: 400px"></div>
</template>

<script>
import * as echarts from 'echarts';

export default {
  name: 'ScatterChart',
  mounted() {
    this.initChart();
  },
  methods: {
    initChart() {
      const chartDom = this.$refs.scatterChart;
      const myChart = echarts.init(chartDom);

      const option = {
        title: {
          text: '散点图示例'
        },
        tooltip: {},
        xAxis: {
          name: 'X轴'
        },
        yAxis: {
          name: 'Y轴'
        },
        series: [{
          symbolSize: 20,
          data: [
            [10.0, 8.04],
            [8.0, 6.95],
            [13.0, 7.58],
            [9.0, 8.81],
            [11.0, 8.33],
            [14.0, 9.96],
            [6.0, 7.24],
            [4.0, 4.26],
            [12.0, 10.84],
            [7.0, 4.82],
            [5.0, 5.68]
          ],
          type: 'scatter'
        }]
      };

      myChart.setOption(option);

      // 响应式调整
      window.addEventListener('resize', function() {
        myChart.resize();
      });
    }
  }
};
</script>

进阶功能实现

添加动态数据更新和点击事件:

methods: {
  initChart() {
    // ...基础配置同前

    // 动态更新示例
    setInterval(() => {
      const newData = this.generateRandomData();
      myChart.setOption({
        series: [{
          data: newData
        }]
      });
    }, 2000);

    // 点击事件
    myChart.on('click', (params) => {
      console.log('点击数据点:', params.data);
    });
  },
  generateRandomData() {
    return Array.from({length: 10}, () => [
      Math.random() * 20,
      Math.random() * 10
    ]);
  }
}

样式优化配置

option = {
  // ...其他配置
  series: [{
    itemStyle: {
      color: function(params) {
        const colorList = ['#c23531','#2f4554','#61a0a8'];
        return colorList[params.dataIndex % 3];
      }
    },
    label: {
      show: true,
      formatter: ({data}) => `(${data[0]}, ${data[1]})`
    }
  }]
}

注意事项

  1. 需要在 mounted 生命周期初始化图表,确保 DOM 已渲染

    vue实现散点图源码

  2. 组件销毁时应移除事件监听和图表实例:

    beforeDestroy() {
    if (this.myChart) {
     this.myChart.dispose();
     window.removeEventListener('resize', this.resizeHandler);
    }
    }
  3. 大数据量场景建议启用渐进渲染:

    series: [{
    progressive: 1000,
    progressiveThreshold: 3000
    }]

标签: 源码vue
分享给朋友:

相关文章

vue  实现tab

vue 实现tab

实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染完成。以下是两种常见方法: 使用 v-if 或 v-show 实现条件渲染 通过绑定 currentTab 变量…

vue实现treeview

vue实现treeview

Vue 实现 TreeView 的方法 使用递归组件实现 TreeView 递归组件是 Vue 中实现 TreeView 的常见方式。通过组件调用自身,可以轻松处理嵌套的树形结构数据。 <te…

vue 实现图钉

vue 实现图钉

实现图钉效果的步骤 在Vue中实现图钉(固定位置)效果,可以通过CSS的position: sticky属性或监听滚动事件动态修改元素样式。以下是两种常见方法: 方法一:使用CSS的posi…

vue实现分站

vue实现分站

Vue 实现分站的方案 在 Vue 中实现分站功能通常涉及路由配置、环境变量管理和动态加载资源。以下是几种常见的实现方式: 基于路由的分站实现 通过 Vue Router 配置多路由,区分不同站点的…

vue实现搜索提示

vue实现搜索提示

Vue实现搜索提示的方法 使用v-model绑定输入框 通过v-model将输入框的值与Vue实例中的数据进行双向绑定,实时获取用户输入内容。 <input v-model="searchQu…

vue实现子表格

vue实现子表格

Vue 实现子表格的方法 在 Vue 中实现子表格可以通过多种方式完成,以下是几种常见的方法: 使用嵌套组件 创建一个父表格组件和一个子表格组件,通过 props 将数据传递给子表格组件。父表格的每…