杰瑞科技汇

Python pyecharts省份数据如何可视化?

pyecharts 是一个强大的数据可视化库,它底层封装了 ECharts,支持生成各种交互式的图表,绘制地图是它的一个核心功能。

Python pyecharts省份数据如何可视化?-图1
(图片来源网络,侵删)

核心步骤

绘制一个省级地图通常遵循以下四个步骤:

  1. 安装库:确保你已经安装了 pyecharts
  2. 准备数据:准备一个包含省份名称和对应数值的列表。
  3. 创建地图实例:实例化一个 Map 对象。
  4. 添加数据并渲染:将数据添加到地图实例中,并调用 render() 方法生成一个 HTML 文件。

第 1 步:安装库

你需要安装 pyecharts,如果尚未安装,请在终端或命令行中运行:

pip install pyecharts

重要提示:地图文件

pyecharts9.0 版本开始,将地图相关的文件(如 json 文件)从主包中移除了,你需要单独安装你需要的地图数据。

Python pyecharts省份数据如何可视化?-图2
(图片来源网络,侵删)

对于中国省级地图,你需要安装 echarts-china-provinces-pypkg

pip install echarts-china-provinces-pypkg

如果你还需要绘制中国市级地图,可以安装 echarts-china-cities-pypkg,县级地图则安装 echarts-china-counties-pypkg 等。


第 2 步:准备数据

数据通常是一个包含两个元素的列表(或元组)的列表,第一个元素是地区名称(字符串),第二个元素是对应的数值(数字)。

# 示例数据:2025年部分省份的GDP(单位:万亿元)
data = [
    ("广东", 12.44),
    ("江苏", 11.6),
    ("山东", 8.31),
    ("浙江", 7.35),
    ("河南", 5.89),
    ("四川", 5.67),
    ("湖北", 5.58),
    ("福建", 5.11),
    ("湖南", 4.87),
    ("上海", 4.32),
    # ... 可以继续添加其他省份
]

第 3 & 4 步:创建地图并渲染

下面是一个完整的、最基础的示例代码。

Python pyecharts省份数据如何可视化?-图3
(图片来源网络,侵删)

示例 1:基础地图

from pyecharts.charts import Map
from pyecharts import options as opts
# 1. 准备数据
data = [
    ("广东", 12.44),
    ("江苏", 11.6),
    ("山东", 8.31),
    ("浙江", 7.35),
    ("河南", 5.89),
    ("四川", 5.67),
    ("湖北", 5.58),
    ("福建", 5.11),
    ("湖南", 4.87),
    ("上海", 4.32),
]
# 2. 创建 Map 实例
# maptype="china" 表示绘制中国地图
# is_map_symbol_show=False 可以隐藏地图上的标记点
c = (
    Map()
    .add(
        series_name="GDP (万亿元)",  # 系列名称
        data_pair=data,             # 数据
        maptype="china",            # 地图类型
        is_map_symbol_show=False,   # 不显示标记点
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="2025年中国部分省份GDP分布"),  # 标题
        visualmap_opts=opts.VisualMapOpts(  # 视觉映射组件
            min_=4,  # visualMap 的最小值
            max_=13,  # visualMap 的最大值
            is_piecewise=True,  # 是否分段显示
        ),
    )
)
# 3. 渲染生成 HTML 文件
# 这会在你当前脚本所在的目录下生成一个 map_chart.html 文件
c.render("china_gdp_map.html")
print("地图已生成:china_gdp_map.html")

代码解释:

  • from pyecharts.charts import Map: 从 pyecharts.charts 中导入 Map 类。
  • from pyecharts import options as opts: 导入 options 模块,用于配置图表的各种选项(标题、图例、工具箱等),使用 opts 别名可以简化代码。
  • Map(): 创建一个地图图表对象。
  • .add(): 向图表中添加数据系列。
    • series_name: 数据系列的名称,会显示在图例中。
    • data_pair: 我们准备好的数据列表。
    • maptype: 关键参数,指定地图类型,对于省级地图,这里使用 "china"
  • .set_global_opts(): 设置全局选项。
    • title_opts: 设置图表标题。
    • visualmap_opts: 设置视觉映射组件,它会根据数据的大小自动将地图上的区域上色(数值大的颜色深,数值小的颜色浅)。
      • min_max_: 设定数值的范围。
      • is_piecewise=True: 将颜色条分成几段,而不是渐变色。
  • c.render("filename.html"): 将图表渲染成一个 HTML 文件,你可以在浏览器中打开这个文件,看到一个交互式的地图。

运行上述代码后,你会得到一个名为 china_gdp_map.html 的文件,用浏览器打开效果如下:


进阶用法与配置

pyecharts 提供了丰富的配置选项,可以创建更精美、信息量更大的地图。

示例 2:添加标签、工具提示和主题

from pyecharts.charts import Map
from pyecharts import options as opts
from pyecharts.globals import ThemeType
# 数据同上
data = [
    ("广东", 12.44), ("江苏", 11.6), ("山东", 8.31), ("浙江", 7.35),
    ("河南", 5.89), ("四川", 5.67), ("湖北", 5.58), ("福建", 5.11),
    ("湖南", 4.87), ("上海", 4.32),
]
# 创建实例时指定主题
c = (
    Map(init_opts=opts.InitOpts(theme=ThemeType.DARK)) # 使用暗黑主题
    .add(
        series_name="GDP (万亿元)",
        data_pair=data,
        maptype="china",
        is_map_symbol_show=False,
        label_opts=opts.LabelOpts(is_show=True), # 显示省份名称标签
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="2025年中国部分省份GDP分布(暗黑主题)"),
        visualmap_opts=opts.VisualMapOpts(
            min_=4,
            max_=13,
            is_piecewise=True,
            pos_left="10%", # 调整 visualmap 位置
            pos_top="center",
        ),
        tooltip_opts=opts.TooltipOpts(
            trigger="item", # 触发方式,item 表示数据项触发
            formatter="{b}<br/>GDP: {c} 万亿元" # 自定义提示框内容
        )
    )
)
c.render("china_gdp_map_advanced.html")
print("高级地图已生成:china_gdp_map_advanced.html")

新增配置解释:

  • init_opts=opts.InitOpts(theme=ThemeType.DARK): 在初始化图表时指定主题,如 DARK(暗黑)、LIGHT(明亮)、WONDERLAND(童话)等。
  • label_opts=opts.LabelOpts(is_show=True): 控制是否在每个省份的区域内显示名称标签。
  • tooltip_opts: 配置鼠标悬停时出现的提示框。
    • trigger="item": 表示当鼠标悬停在某个数据项(即某个省份)上时触发。
    • formatter: 自定义提示框的显示内容。{b} 代表地区名,{c} 代表数值。
  • pos_left="10%": 可以调整 visualmap 组件的位置。

常见问题与解决

为什么我的地图是空白的,或者省份名称显示不出来?

  • 原因:最常见的原因是 没有安装对应的地图数据包
  • 解决:请确保你已经通过 pip install echarts-china-provinces-pypkg 安装了省级地图数据。pyecharts 不会自动从网上下载地图数据,需要本地预装。

如何绘制中国地图,但只突出显示某个省份(台湾省”)?

你可以通过设置 emphasis(高亮)样式来实现。

from pyecharts.charts import Map
from pyecharts import options as opts
data = [("台湾省", 100)] # 只关心台湾省的数据
c = (
    Map()
    .add(series_name="示例", data_pair=data, maptype="china")
    .set_global_opts(
        title_opts=opts.TitleOpts(title="突出显示台湾省"),
        visualmap_opts=opts.VisualMapOpts(is_show=False) # 隐藏 visualmap
    )
    .set_series_opts(
        label_opts=opts.LabelOpts(is_show=True), # 显示所有省份标签
        emphasis_opts=opts.EmphasisOpts(
            itemstyle_opts={
                "areaColor": "#FF0000", # 高亮时的填充色
                "borderColor": "#000",  # 高亮时的边框色
                "borderWidth": 1,
            }
        )
    )
)
c.render("highlight_taiwan.html")
  • .set_series_opts(): 用于设置系列级别的选项。
  • emphasis_opts: 当鼠标悬停或选中时生效的样式。
    • itemstyle_opts: 可以设置区域的填充色、边框色和边框宽度。

如何在地图上叠加散点图?

这需要使用 Geo(地理坐标系)图表,它比 Map 更灵活,可以同时绘制地图、散点、线等。

from pyecharts.charts import Geo
from pyecharts import options as opts
from pyecharts.globals import ChartType, SymbolType
# 数据:城市名称和坐标 (经度, 纬度)
# 注意:Geo 图表需要的是坐标,而不是简单的数值
cities_data = [
    ("北京", (116.46, 39.92)),
    ("上海", (121.48, 31.22)),
    ("广州", (113.23, 23.16)),
    ("深圳", (114.07, 22.62)),
    ("成都", (104.06, 30.67)),
]
# 散点大小数据
scatter_size_data = [
    ("北京", 150),
    ("上海", 180),
    ("广州", 120),
    ("深圳", 200),
    ("成都", 90),
]
c = (
    Geo()
    .add(
        series_name="主要城市",
        data_pair=cities_data,
        type_=ChartType.SCATTER, # 图表类型为散点图
        symbol_size=10, # 散点基础大小
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="中国主要城市散点分布"),
        visualmap_opts=opts.VisualMapOpts(
            type_="size", # visualMap 的类型,根据大小映射
            is_show=False,
        ),
    )
    .set_series_opts(
        label_opts=opts.LabelOpts(is_show=False), # 不显示城市名
        effect_opts=opts.EffectOpts(
            symbol=SymbolType.ARROW, # 设置涟漪效果为箭头
            symbol_size=8,
            color="#fff",
        ),
    )
)
c.render("geo_scatter_map.html")

这个例子展示了 Geo 图表的基本用法,它功能更强大,适合更复杂的地理数据可视化场景。

功能 关键代码/方法 说明
基础绘制 Map().add(data_pair, maptype="china") 创建地图并添加数据
颜色映射 .set_global_opts(visualmap_opts=...) 根据数值大小自动上色
标签显示 .add(label_opts=opts.LabelOpts(is_show=True)) 控制省份名称是否显示
交互提示 .set_global_opts(tooltip_opts=...) 鼠标悬停时显示信息
主题 Map(init_opts=opts.InitOpts(theme=...)) 切换图表视觉主题
高亮效果 .set_series_opts(emphasis_opts=...) 设置鼠标悬停时的高亮样式
地图数据 pip install echarts-china-provinces-pypkg 必须安装的依赖

希望这份详细的指南能帮助你熟练地使用 pyecharts 绘制出漂亮的中国省级地图!

分享:
扫描分享到社交APP
上一篇
下一篇