当前位置:首页 > 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 实现主题的方法 使用 CSS 变量动态切换主题 定义全局 CSS 变量,通过修改这些变量实现主题切换。在 Vue 的根组件或全局样式中定义变量: :root { --primary-co…

vue实现rtc

vue实现rtc

Vue 实现 RTC 的步骤 安装依赖 在 Vue 项目中安装 WebRTC 相关依赖,如 simple-peer 或 peerjs,用于简化 WebRTC 的实现。 运行以下命令安装 simple-…

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…

vue课程实现

vue课程实现

Vue 课程实现方案 课程内容设计 Vue课程应从基础到高级逐步展开,涵盖Vue核心概念、组件化开发、状态管理、路由、构建工具等。基础部分包括Vue实例、模板语法、计算属性和侦听器。中级部分深入组件通…

vue实现翻页

vue实现翻页

Vue实现翻页功能 在Vue中实现翻页功能通常需要结合分页组件和数据请求逻辑。以下是常见的实现方法: 使用Element UI分页组件 安装Element UI后,可以直接使用其分页组件:…

mvvm实现vue

mvvm实现vue

MVVM 模式在 Vue 中的实现 MVVM(Model-View-ViewModel)是一种前端架构模式,Vue 的设计灵感来源于此。以下是 MVVM 在 Vue 中的核心实现方式: 数据绑定(M…