从新手到高手:轻松掌握ECharts地图图表制作实战案例全解析

2026-10-10 0 阅读

ECharts 是一个使用 JavaScript 实现的开源可视化库,它提供了丰富的图表类型,包括地图图表。地图图表在展示地理信息、数据分布等方面有着独特的优势。本篇文章将带领新手从零开始,逐步成长为 ECharts 地图图表制作的高手,并通过实战案例进行详细解析。

第一章:ECharts 地图图表基础入门

1.1 ECharts 简介

ECharts 是一个使用 JavaScript 实现的开源可视化库,它提供了丰富的图表类型,包括折线图、柱状图、饼图、地图图表等。ECharts 的特点如下:

  • 丰富的图表类型:支持多种图表类型,满足不同场景的需求。
  • 高性能:采用 Canvas 和 SVG 渲染,性能优异。
  • 易用性:简单易学的 API,方便用户快速上手。
  • 高度可定制:支持丰富的配置项,满足个性化需求。

1.2 地图图表基本概念

地图图表是 ECharts 中的一种图表类型,用于展示地理信息、数据分布等。它由以下几部分组成:

  • 地图:展示地理信息的基础,如国家、省份、城市等。
  • 数据:地图上的数据点,如人口、GDP、温度等。
  • 图表:在地图上展示数据的方式,如散点图、热力图等。

第二章:ECharts 地图图表制作实战

2.1 环境搭建

首先,需要在项目中引入 ECharts 库。可以通过以下方式引入:

<script src="https://cdn.jsdelivr.net/npm/echarts@5.3.2/dist/echarts.min.js"></script>

2.2 地图数据准备

地图数据可以通过 ECharts 提供的地图数据接口获取,也可以自行准备。以下是一个示例:

var geoCoordMap = {
  '北京': [116.46, 39.92],
  '上海': [121.48, 31.22],
  '广州': [113.23, 23.16]
};

var data = [
  {name: '北京', value: 50},
  {name: '上海', value: 70},
  {name: '广州', value: 60}
];

2.3 地图图表配置

以下是一个简单的地图图表配置示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
  title: {
    text: '中国地图示例',
    left: 'center'
  },
  tooltip: {
    trigger: 'item'
  },
  geo: {
    map: 'china',
    roam: true,
    label: {
      emphasis: {
        show: false
      }
    },
    itemStyle: {
      normal: {
        areaColor: '#323c48',
        borderColor: '#111'
      },
      emphasis: {
        areaColor: '#2a333d'
      }
    }
  },
  series: [
    {
      name: '数据',
      type: 'scatter',
      coordinateSystem: 'geo',
      data: data,
      symbolSize: function (val) {
        return val[2] / 10;
      },
      emphasis: {
        label: {
          show: true,
          formatter: function (param) {
            return param.data.name + ' : ' + param.data.value;
          },
          position: 'top',
          backgroundColor: '#333',
          borderColor: '#f6f8fa',
          borderWidth: 1,
          padding: [0, 5, 10, 0],
          textStyle: {
            color: '#f6f8fa'
          }
        }
      },
      itemStyle: {
        normal: {
          borderColor: '#f6f8fa',
          borderWidth: 1
        }
      }
    }
  ]
};

myChart.setOption(option);

2.4 实战案例:全球疫情实时追踪

以下是一个全球疫情实时追踪的地图图表实战案例:

var myChart = echarts.init(document.getElementById('main'));

var worldGeo = {
  'type': 'FeatureCollection',
  'features': []
};

// 获取全球疫情数据
fetch('https://api.covid19api.com/summary')
  .then(response => response.json())
  .then(data => {
    data.Countries.forEach(country => {
      worldGeo.features.push({
        'type': 'Feature',
        'properties': {
          'name': country.Country,
          'confirmed': country.Confirmed,
          'recovered': country.Recovered,
          'deaths': country.Deaths
        },
        'geometry': {
          'type': 'Point',
          'coordinates': [country.Longitude, country.Latitude]
        }
      });
    });

    var option = {
      title: {
        text: '全球疫情实时追踪',
        left: 'center'
      },
      tooltip: {
        trigger: 'item',
        formatter: function (params) {
          return params.name + '<br/>' + '确诊:' + params.properties.confirmed + '<br/>' + '康复:' + params.properties.recovered + '<br/>' + '死亡:' + params.properties.deaths;
        }
      },
      visualMap: {
        min: 0,
        max: 100000,
        left: 'left',
        top: 'bottom',
        text: ['高', '低'], // 文本,默认为数值文本
        calculable: true
      },
      geo: {
        map: 'world',
        roam: true,
        label: {
          emphasis: {
            show: false
          }
        },
        itemStyle: {
          normal: {
            areaColor: '#323c48',
            borderColor: '#111'
          },
          emphasis: {
            areaColor: '#2a333d'
          }
        }
      },
      series: [
        {
          name: '疫情数据',
          type: 'scatter',
          coordinateSystem: 'geo',
          data: worldGeo.features,
          symbolSize: function (val) {
            return val.properties.confirmed / 1000;
          },
          emphasis: {
            label: {
              show: true,
              formatter: function (param) {
                return param.properties.name + '<br/>' + '确诊:' + param.properties.confirmed + '<br/>' + '康复:' + param.properties.recovered + '<br/>' + '死亡:' + param.properties.deaths;
              },
              position: 'top',
              backgroundColor: '#333',
              borderColor: '#f6f8fa',
              borderWidth: 1,
              padding: [0, 5, 10, 0],
              textStyle: {
                color: '#f6f8fa'
              }
            }
          },
          itemStyle: {
            normal: {
              borderColor: '#f6f8fa',
              borderWidth: 1
            }
          }
        }
      ]
    };

    myChart.setOption(option);
  });

第三章:ECharts 地图图表进阶技巧

3.1 动画效果

ECharts 地图图表支持丰富的动画效果,如数据渐变、地图渐显等。以下是一个数据渐变动画的示例:

series: [
  {
    name: '数据',
    type: 'scatter',
    coordinateSystem: 'geo',
    data: data,
    symbolSize: function (val) {
      return val[2] / 10;
    },
    emphasis: {
      label: {
        show: true,
        formatter: function (param) {
          return param.data.name + ' : ' + param.data.value;
        },
        position: 'top',
        backgroundColor: '#333',
        borderColor: '#f6f8fa',
        borderWidth: 1,
        padding: [0, 5, 10, 0],
        textStyle: {
          color: '#f6f8fa'
        }
      }
    },
    itemStyle: {
      normal: {
        borderColor: '#f6f8fa',
        borderWidth: 1
      }
    },
    animation: true,
    animationDuration: 1000,
    animationEasing: 'cubicInOut'
  }
]

3.2 地图交互

ECharts 地图图表支持丰富的交互功能,如点击、鼠标悬停、缩放等。以下是一个点击事件示例:

myChart.on('click', function (params) {
  if (params.componentType === 'series') {
    console.log(params.name + ' : ' + params.value);
  }
});

第四章:总结

通过本章的学习,相信你已经掌握了 ECharts 地图图表制作的基本技巧和实战案例。接下来,你可以根据自己的需求进行个性化定制,发挥 ECharts 地图图表的强大功能。祝你学习愉快!

分享到: