当前位置:首页 > VUE

vue实现散点图源码

2026-02-17 15:28:57VUE

以下是一个基于 Vue 和 ECharts 实现散点图的完整源码示例,分为组件封装和基础使用两部分:

安装依赖

确保项目中已安装 ECharts 和 Vue-ECharts:

vue实现散点图源码

npm install echarts vue-echarts

封装可复用的散点图组件

创建 ScatterChart.vue 文件:

<template>
  <v-chart 
    class="scatter-chart" 
    :option="option" 
    :autoresize="true"
  />
</template>

<script>
import { use } from 'echarts/core';
import { ScatterChart } from 'echarts/charts';
import {
  GridComponent,
  TooltipComponent,
  LegendComponent,
  TitleComponent
} from 'echarts/components';
import { CanvasRenderer } from 'echarts/renderers';
import VChart from 'vue-echarts';

use([
  ScatterChart,
  GridComponent,
  TooltipComponent,
  LegendComponent,
  TitleComponent,
  CanvasRenderer
]);

export default {
  components: { VChart },
  props: {
    data: {
      type: Array,
      required: true
    },
    xAxisName: {
      type: String,
      default: 'X轴'
    },
    yAxisName: {
      type: String,
      default: 'Y轴'
    }
  },
  computed: {
    option() {
      return {
        title: {
          text: '散点图示例'
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'cross'
          }
        },
        legend: {
          data: ['数据集1']
        },
        xAxis: {
          name: this.xAxisName,
          type: 'value'
        },
        yAxis: {
          name: this.yAxisName,
          type: 'value'
        },
        series: [{
          name: '数据集1',
          type: 'scatter',
          symbolSize: 10,
          data: this.data,
          itemStyle: {
            color: '#5470c6'
          }
        }]
      };
    }
  }
};
</script>

<style scoped>
.scatter-chart {
  width: 100%;
  height: 400px;
}
</style>

在父组件中使用

在需要展示散点图的页面中引入组件:

vue实现散点图源码

<template>
  <div>
    <scatter-chart 
      :data="chartData" 
      x-axis-name="温度(℃)" 
      y-axis-name="销量(件)"
    />
  </div>
</template>

<script>
import ScatterChart from './components/ScatterChart.vue';

export default {
  components: { ScatterChart },
  data() {
    return {
      chartData: [
        [10, 35],
        [15, 48],
        [20, 60],
        [25, 72],
        [30, 85],
        [35, 92],
        [40, 78]
      ]
    };
  }
};
</script>

高级配置选项(可选)

若需要更复杂的散点图,可修改 option 计算属性:

option() {
  return {
    // ...其他配置
    series: [{
      type: 'scatter',
      symbolSize: function (data) {
        return Math.sqrt(data[1]) * 2;
      },
      label: {
        show: true,
        formatter: function (param) {
          return param.data[0] + ',' + param.data[1];
        }
      },
      emphasis: {
        itemStyle: {
          shadowBlur: 10,
          shadowColor: 'rgba(0, 0, 0, 0.5)'
        }
      }
    }]
  };
}

动态更新数据

通过 Vue 的响应式特性,当数据变化时图表会自动更新:

// 在父组件中
methods: {
  updateData() {
    this.chartData = [
      ...this.chartData,
      [Math.random() * 50, Math.random() * 100]
    ];
  }
}

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

相关文章

vue自己实现下拉导航

vue自己实现下拉导航

实现下拉导航的基本思路 在Vue中实现下拉导航,可以通过结合Vue的响应式数据和事件绑定特性来完成。主要思路是利用v-show或v-if控制下拉菜单的显示与隐藏,并通过鼠标事件或点击事件触发状态变化。…

vue实现图册

vue实现图册

Vue实现图册功能 在Vue中实现图册功能通常涉及图片展示、切换、缩放等交互效果。以下是常见的实现方法和关键代码示例: 基础图册组件结构 使用Vue单文件组件构建基础结构: <templat…

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…

vue 实现拖动

vue 实现拖动

Vue 实现拖动的几种方法 在Vue中实现拖动功能可以通过多种方式,包括原生HTML5的拖放API、第三方库如vuedraggable等。以下是几种常见的实现方法: 使用HTML5拖放API HT…

vue实现radio

vue实现radio

Vue 实现 Radio 按钮 在 Vue 中实现 Radio 按钮可以通过 v-model 进行数据绑定,结合 input 元素的 type="radio" 属性。以下是一个基本示例: <t…

vue实现slidetoggle

vue实现slidetoggle

Vue 实现 SlideToggle 效果 SlideToggle 是一种常见的交互效果,元素以滑动方式展开或收起。以下是几种实现方法: 使用 CSS Transition 和 v-show 通过…