当前位置:首页 > VUE

vue实现某个省散点图

2026-01-20 18:55:32VUE

使用 Vue 实现省级散点图

准备工作

确保项目中已安装 ECharts 和 Vue-ECharts。可以通过以下命令安装:

npm install echarts vue-echarts

引入 ECharts 和 Vue-ECharts

在 Vue 组件中引入必要的库和组件:

import * as echarts from 'echarts';
import { use } from 'echarts/core';
import { CanvasRenderer } from 'echarts/renderers';
import { ScatterChart } from 'echarts/charts';
import {
  TitleComponent,
  TooltipComponent,
  GridComponent,
  VisualMapComponent
} from 'echarts/components';
import VChart from 'vue-echarts';

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

准备数据

假设需要展示某个省的城市人口与 GDP 的散点图,数据格式如下:

const scatterData = [
  { name: '城市A', value: [120, 50, 800] }, // [经度, 纬度, GDP]
  { name: '城市B', value: [121, 51, 1200] },
  { name: '城市C', value: [122, 52, 600] }
];

配置散点图选项

在 Vue 组件的 datasetup 中配置 ECharts 选项:

const option = {
  title: {
    text: 'XX省城市GDP分布散点图'
  },
  tooltip: {
    formatter: params => {
      return `${params.data.name}<br/>GDP: ${params.data.value[2]}亿元`;
    }
  },
  visualMap: {
    min: 0,
    max: 2000,
    dimension: 2,
    orient: 'vertical',
    right: 10,
    top: 'center',
    text: ['高', '低'],
    calculable: true,
    inRange: {
      color: ['#50a3ba', '#eac736', '#d94e5d']
    }
  },
  grid: {
    left: '3%',
    right: '7%',
    bottom: '3%',
    containLabel: true
  },
  xAxis: {
    name: '经度',
    nameLocation: 'middle',
    nameGap: 30
  },
  yAxis: {
    name: '纬度',
    nameLocation: 'middle',
    nameGap: 30
  },
  series: [{
    name: '城市',
    type: 'scatter',
    symbolSize: val => {
      return Math.sqrt(val[2]) * 2;
    },
    data: scatterData.map(item => ({
      name: item.name,
      value: item.value,
      symbolSize: Math.sqrt(item.value[2]) * 2
    })),
    label: {
      show: true,
      formatter: params => {
        return params.data.name;
      },
      position: 'top'
    },
    emphasis: {
      label: {
        show: true
      }
    }
  }]
};

在模板中使用组件

在 Vue 组件的模板部分添加图表组件:

<template>
  <div class="chart-container">
    <v-chart class="chart" :option="option" autoresize />
  </div>
</template>

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

自定义散点样式

可以通过 itemStyle 自定义散点的颜色和样式:

series: [{
  // ...
  itemStyle: {
    color: params => {
      const val = params.data.value[2];
      if (val > 1000) return '#d94e5d';
      if (val > 500) return '#eac736';
      return '#50a3ba';
    }
  }
}]

添加地图背景

如果需要在地图上显示散点,可以引入中国地图:

import china from 'echarts/map/json/china.json';
echarts.registerMap('china', china);

// 在option中添加geo配置
geo: {
  map: 'china',
  roam: true,
  zoom: 1.5,
  center: [105, 36], // 调整中心点位置
  itemStyle: {
    areaColor: '#f5f5f5',
    borderColor: '#ccc'
  }
}

响应式调整

监听窗口大小变化,确保图表自适应:

vue实现某个省散点图

mounted() {
  window.addEventListener('resize', this.handleResize);
},
beforeDestroy() {
  window.removeEventListener('resize', this.handleResize);
},
methods: {
  handleResize() {
    if (this.chart) {
      this.chart.resize();
    }
  }
}

标签: vue省散点图
分享给朋友:

相关文章

vue实现微博印象

vue实现微博印象

实现微博印象功能的核心思路 微博印象功能通常指用户发布微博后,系统自动分析文本内容并提取关键词或标签,以可视化形式展示。Vue实现该功能需要结合文本分析、关键词提取和前端渲染技术。 文本分析与关键词…

vue实现多选题

vue实现多选题

Vue实现多选题的方法 使用Vue实现多选题功能,可以通过v-model绑定数组、动态渲染选项、以及处理选中状态来实现。以下是一个完整的实现示例: 基础实现代码 <template>…

vue全选实现

vue全选实现

Vue 全选实现方法 在 Vue 中实现全选功能通常涉及数据绑定和事件处理。以下是几种常见的实现方式: 基础实现方式 <template> <div> <i…

vue 实现pc

vue 实现pc

Vue 实现 PC 端应用的核心要点 Vue.js 是一个渐进式框架,适合构建 PC 端单页应用(SPA)或复杂的前端界面。以下是实现 PC 端应用的关键方法和注意事项: 项目初始化与工程化配置 使…

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

vue实现图集

vue实现图集

Vue 实现图集的方法 在 Vue 中实现图集功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用第三方库(如 vue-image-lightbox) 安装 vue-image-ligh…