完整教程:pyecharts可视化图表-map:从入门到精通

前言

Map图表(地图可视化)是一种非常直观的数据展示方式,它将数据与地理位置相结合,帮助我们更好地理解区域分布、趋势和模式。pyecharts是一款基于ECharts的Python可视化库,提供了丰富的图表类型和高度的定制化能力,其中地图可视化功能尤为强大。pyecahts源码在这里插入图片描述

pyecharts的地图可视化支持多种级别:

  • 世界地图
  • 国家地图(如中国地图)
  • 省级地图(如广东省地图)
  • 城市级地图

地图可视化的优势在于:

  • 直观展示地理分布特征,让数据"活"起来
  • 便于发现区域间的差异和联系,挖掘数据背后的地理规律
  • 增强数据的可读性和吸引力,提升报告或演示的效果
  • 支持交互操作(如悬停显示详情、缩放平移),提升用户体验

在数据分析、商业智能、公共卫生、环境保护等领域,地图可视化都有着广泛的应用。例如:

  • 展示各地区的销售业绩或人口分布
  • 分析疫情在不同地区的传播情况
  • 可视化资源分布和区域发展不平衡问题

本文将从基础开始,通过五个实用示例,逐步介绍如何使用pyecharts创建各种精美的地图可视化图表,并分享一些实用技巧和最佳实践。

图表一:Map - 基本示例

下面是创建基本地图图表的代码:

from pyecharts import options as opts # 导入配置模块
from pyecharts.charts import Map # 导入地图图表模块
from pyecharts.faker import Faker # 导入模拟数据生成器
c = (
Map() # 创建Map实例
# 添加数据系列,格式为(系列名称, 数据列表, 地图类型)
# 数据列表使用zip函数将省份列表和数值列表组合成元组列表
.add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
# 设置全局配置,添加标题
.set_global_opts(title_opts=opts.TitleOpts(title="Map-基本示例"))
#.render("map_base.html") # 可选:保存为HTML文件
)
c.render_notebook() # 在Jupyter Notebook中渲染图表

代码说明:

  1. 首先导入必要的模块:options用于配置图表,Map用于创建地图图表,Faker用于生成模拟数据。
  2. 创建Map实例。
  3. 使用.add()方法添加数据系列:
    • 第一个参数是系列名称(“商家A”)
    • 第二个参数是数据列表,这里使用列表推导式和zip函数将Faker.provinces(省份列表)和Faker.values()(随机数值列表)组合成元组列表
    • 第三个参数是地图类型("china"表示中国地图)
  4. 使用.set_global_opts()设置全局配置,这里添加了一个标题。
  5. 最后使用.render_notebook()在Jupyter Notebook中渲染图表。如果需要保存为HTML文件,可以使用.render("map_base.html")

效果展示:

执行上述代码后,你将看到一个中国地图,各省份根据随机生成的数据显示不同的颜色深度。鼠标悬停在省份上时,会显示该省份的名称和对应的值。
在这里插入图片描述

图表二:Map - 广东地图

下面是创建广东省地图的代码示例:

from pyecharts import options as opts # 导入配置模块
from pyecharts.charts import Map # 导入地图图表模块
from pyecharts.faker import Faker # 导入模拟数据生成器
c = (
Map() # 创建Map实例
# 添加数据系列,格式为(系列名称, 数据列表, 地图类型)
# 数据列表使用zip函数将广东省城市列表和数值列表组合成元组列表
.add("商家A", [list(z) for z in zip(Faker.guangdong_city, Faker.values())], "广东")
# 设置全局配置,添加标题和视觉映射
.set_global_opts(
title_opts=opts.TitleOpts(title="Map-广东地图"),
visualmap_opts=opts.VisualMapOpts() # 添加视觉映射,使颜色随数值变化
)
#.render("map_guangdong.html") # 可选:保存为HTML文件
)
c.render_notebook() # 在Jupyter Notebook中渲染图表

代码说明:

  1. 导入必要的模块:optionsMapFaker
  2. 创建Map实例。
  3. 使用.add()方法添加数据系列:
    • 第一个参数是系列名称(“商家A”)
    • 第二个参数是数据列表,这里使用列表推导式和zip函数将Faker.guangdong_city(广东省城市列表)和Faker.values()(随机数值列表)组合成元组列表
    • 第三个参数是地图类型("广东"表示广东省地图)
  4. 使用.set_global_opts()设置全局配置:
    • 添加了标题"Map-广东地图"
    • 添加了visualmap_opts=opts.VisualMapOpts(),这会显示一个视觉映射条,使地图上的颜色随数值大小变化
  5. 最后使用.render_notebook()在Jupyter Notebook中渲染图表。

效果展示:

执行上述代码后,你将看到一个广东省地图,各城市根据随机生成的数据显示不同的颜色深度。地图右侧会显示一个颜色映射条,表示数值与颜色的对应关系。鼠标悬停在城市上时,会显示该城市的名称和对应的值。
在这里插入图片描述

图表三:Map - 中国地图(带城市)

下面是创建带城市级别的中国地图的代码示例:

from pyecharts import options as opts # 导入配置模块
from pyecharts.charts import Map # 导入地图图表模块
from pyecharts.faker import Faker # 导入模拟数据生成器
c = (
Map() # 创建Map实例
.add(
"商家A",
[list(z) for z in zip(Faker.guangdong_city, Faker.values())],
"china-cities", # 地图类型为中国城市级地图
label_opts=opts.LabelOpts(is_show=False), # 不显示城市标签
)
.set_global_opts(
title_opts=opts.TitleOpts(title="Map-中国地图(带城市)"),
visualmap_opts=opts.VisualMapOpts(), # 添加视觉映射
)
#.render("map_china_cities.html") # 可选:保存为HTML文件
)
c.render_notebook() # 在Jupyter Notebook中渲染图表

代码说明:

  1. 导入必要的模块:optionsMapFaker
  2. 创建Map实例。
  3. 使用.add()方法添加数据系列:
    • 第一个参数是系列名称(“商家A”)
    • 第二个参数是数据列表,这里使用列表推导式和zip函数将Faker.guangdong_city(广东省城市列表)和Faker.values()(随机数值列表)组合成元组列表
    • 第三个参数是地图类型("china-cities"表示中国城市级地图)
    • label_opts=opts.LabelOpts(is_show=False)设置不显示城市标签,避免地图过于拥挤
  4. 使用.set_global_opts()设置全局配置:
    • 添加了标题"Map-中国地图(带城市)"
    • 添加了visualmap_opts=opts.VisualMapOpts(),显示颜色映射条
  5. 最后使用.render_notebook()在Jupyter Notebook中渲染图表。

效果展示:

执行上述代码后,你将看到一个中国地图,显示了城市级别的数据。由于使用了label_opts=opts.LabelOpts(is_show=False),地图上不会显示城市名称,但鼠标悬停在城市上时,仍会显示该城市的名称和对应的值。地图右侧会显示一个颜色映射条,表示数值与颜色的对应关系。
在这里插入图片描述

图表四:Map - 分段型视觉映射

下面是创建分段型视觉映射中国地图的代码示例:

from pyecharts import options as opts # 导入配置模块
from pyecharts.charts import Map # 导入地图图表模块
from pyecharts.faker import Faker # 导入模拟数据生成器
c = (
Map() # 创建Map实例
# 添加数据系列,格式为(系列名称, 数据列表, 地图类型)
.add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
# 设置全局配置,添加标题和分段型视觉映射
.set_global_opts(
title_opts=opts.TitleOpts(title="Map-VisualMap(分段型)"),
visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True), # is_piecewise=True表示使用分段型视觉映射
)
#.render("map_visualmap_piecewise.html") # 可选:保存为HTML文件
)
c.render_notebook() # 在Jupyter Notebook中渲染图表

代码说明:

  1. 导入必要的模块:optionsMapFaker
  2. 创建Map实例。
  3. 使用.add()方法添加数据系列:
    • 第一个参数是系列名称(“商家A”)
    • 第二个参数是数据列表,这里使用列表推导式和zip函数将Faker.provinces(省份列表)和Faker.values()(随机数值列表)组合成元组列表
    • 第三个参数是地图类型("china"表示中国地图)
  4. 使用.set_global_opts()设置全局配置:
    • 添加了标题"Map-VisualMap(分段型)"
    • 添加了visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True),这里is_piecewise=True表示使用分段型视觉映射,max_=200设置最大值为200
  5. 最后使用.render_notebook()在Jupyter Notebook中渲染图表。

效果展示:

执行上述代码后,你将看到一个中国地图,各省份根据随机生成的数据显示不同的颜色深度。地图右侧会显示一个分段型的颜色映射条,每个颜色段对应一个数值范围。与连续型视觉映射不同,分段型视觉映射将数值划分为多个区间,每个区间使用相同的颜色,更适合展示离散数据或需要明确区分区间的数据。鼠标悬停在省份上时,会显示该省份的名称和对应的值。
在这里插入图片描述

图表五:Map - 世界地图

下面是创建世界地图的代码示例:

from pyecharts import options as opts # 导入配置模块
from pyecharts.charts import Map # 导入地图图表模块
from pyecharts.faker import Faker # 导入模拟数据生成器
c = (
Map() # 创建Map实例
# 添加数据系列,格式为(系列名称, 数据列表, 地图类型)
.add("商家A", [list(z) for z in zip(Faker.country, Faker.values())], "world")
# 设置系列配置,不显示标签
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
# 设置全局配置,添加标题和视觉映射
.set_global_opts(
title_opts=opts.TitleOpts(title="Map-世界地图"),
visualmap_opts=opts.VisualMapOpts(max_=200), # 设置视觉映射最大值为200
)
#.render("map_world.html") # 可选:保存为HTML文件
)
c.render_notebook() # 在Jupyter Notebook中渲染图表

代码说明:

  1. 导入必要的模块:optionsMapFaker
  2. 创建Map实例。
  3. 使用.add()方法添加数据系列:
    • 第一个参数是系列名称(“商家A”)
    • 第二个参数是数据列表,这里使用列表推导式和zip函数将Faker.country(国家列表)和Faker.values()(随机数值列表)组合成元组列表
    • 第三个参数是地图类型("world"表示世界地图)
  4. 使用.set_series_opts()设置系列配置:
    • label_opts=opts.LabelOpts(is_show=False)设置不显示国家标签,避免地图过于拥挤
  5. 使用.set_global_opts()设置全局配置:
    • 添加了标题"Map-世界地图"
    • 添加了visualmap_opts=opts.VisualMapOpts(max_=200),设置视觉映射最大值为200
  6. 最后使用.render_notebook()在Jupyter Notebook中渲染图表。

效果展示:

执行上述代码后,你将看到一个世界地图,各国根据随机生成的数据显示不同的颜色深度。由于使用了label_opts=opts.LabelOpts(is_show=False),地图上不会显示国家名称,但鼠标悬停在国家上时,仍会显示该国家的名称和对应的值。地图右侧会显示一个颜色映射条,表示数值与颜色的对应关系。世界地图可视化非常适合展示全球性的数据分布,如国际贸易、人口分布、疫情传播等跨国家的数据对比。
在这里插入图片描述

地图可视化最佳实践

在使用pyecharts创建地图可视化时,以下最佳实践可以帮助你创建更有效的图表:

1. 选择合适的地图级别

根据你的数据粒度和展示需求选择合适的地图级别:

  • 全球数据:使用世界地图(“world”)
  • 国家数据:使用国家地图(如"china")
  • 省级数据:使用省份地图(如"广东")
  • 城市数据:使用城市级地图(“china-cities”)

2. 合理设置视觉映射

  • 连续型视觉映射:适合展示连续变化的数据(如人口密度)
  • 分段型视觉映射:适合展示离散数据或需要明确区分区间的数据(如收入水平)
  • 调整max_min_参数,确保颜色变化能够清晰反映数据差异

3. 优化标签显示

  • 在数据密集区域(如城市级地图),考虑关闭标签(label_opts=opts.LabelOpts(is_show=False))避免拥挤
  • 对于重要数据点,可单独添加标注或使用tooltip展示详情

4. 配色方案选择

  • 使用与数据含义相关的配色(如温度数据使用渐变色)
  • 确保颜色对比度符合无障碍标准,便于所有用户阅读
  • 可通过`visualmap_opts=opts.VisualMapOpts(range_color=[“#e0ffff”, “#0066cc”])设置自定义颜色范围

5. 添加交互功能

  • 使用tooltip_opts设置悬停提示信息格式
  • 启用缩放和平移功能(默认已启用)
  • 考虑添加地图事件处理,如点击区域显示详细信息

6. 数据准备

  • 确保地理名称与pyecharts支持的名称一致(如中国省份使用全称)
  • 处理缺失数据,避免地图显示不完整
  • 对数据进行适当标准化,确保可视化效果准确

后续章节

接下来,我们将深入探讨更多高级主题:

  • 自定义地图样式:如何修改地图颜色、边框和背景
  • 地图动画效果:添加平滑过渡和加载动画
  • 多地图联动:实现多个地图之间的交互联动
  • 地图与其他图表组合:创建包含地图的仪表盘
  • 实战案例:分析真实数据集并创建专业地图可视化

敬请期待后续内容!

注意事项

  1. 确保已安装pyecharts库:pip install pyecharts
  2. 代码中的.render_notebook()适用于Jupyter Notebook环境,如果需要保存为HTML文件,可以使用.render("filename.html")
  3. Faker模块提供的是模拟数据,实际应用中请替换为真实数据
  4. 对于非中国地图,某些地区的边界可能存在争议,请谨慎使用
  5. 大型地图数据可能需要较长加载时间,可考虑优化数据或使用异步加载

常见问题

Q: 为什么地图没有显示?
A: 请检查是否正确调用了.render_notebook().render()方法,并确保pyecharts库版本正确。若使用Jupyter Notebook,尝试刷新页面或重启内核。

Q: 如何更换地图类型?
A: 可以通过修改.add()方法中的第三个参数来更换地图类型,例如使用"world"表示世界地图,使用省份名称(如"guangdong")表示特定省份的地图。

Q: 地图数据可以自定义吗?
A: 是的,你可以使用自定义的地理数据。pyecharts支持GeoJSON格式的数据,可以通过add_coordinateadd_coordinate_json方法添加自定义地理坐标。

Q: 如何调整地图的大小?
A: 可以通过set_global_opts中的widthheight参数设置地图大小,例如:opts.InitOpts(width="1000px", height="600px")

总结

通过本文的五个示例,我们学习了如何使用pyecharts创建不同类型的地图可视化:

  1. 基础中国地图展示
  2. 省级地图(广东省)可视化
  3. 城市级地图展示
  4. 分段型视觉映射的高级应用
  5. 世界地图的使用

地图可视化是一种强大的数据展示方式,能够直观地呈现地理分布特征和区域差异。pyecharts提供了简单易用但功能丰富的API,使我们能够快速创建专业的地图可视化图表。

在实际应用中,除了掌握基本的API使用,还需要考虑数据准备、视觉设计和用户体验等方面。通过遵循本文介绍的最佳实践,你可以创建出更加有效、美观且易于理解的地图可视化作品。

希望本文对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言讨论。

posted @ 2025-08-25 12:54  wzzkaifa  阅读(29)  评论(0)    收藏  举报