第二十五章:Python-pyecharts 库实现 3D 地图绘制

发布于:2025-04-04 ⋅ 阅读:(21) ⋅ 点赞:(0)

一、pyecharts 简介

   pyecharts 是一个基于 Echarts 的 Python 图表库,可以用于制作各种类型的图表,包括 3D 地图。其 Map3D 模块专门用于绘制 3D 地图,支持中国、世界以及自定义 geoJSON 地图的可视化。绑定附上完整资源供读者参考学习!

二、安装与环境准备

首先,确保安装了 pyecharts 库:

bash

pip install pyecharts

安装完成后,可以开始使用 Map3D 模块。

三、常见操作示例

1. 北京市 3D 地图

以下是绘制海口市 3D 地图的示例代码:

Python示例代码

from pyecharts.charts import Map3D
from pyecharts import options as opts

# 创建 3D 地图实例
map3d = Map3D()

# 添加北京市地图
map3d.add_schema(
    maptype="北京",  # 确保使用正确的 maptype
    itemstyle_opts=opts.ItemStyleOpts(
        color="#4e79a7",
        opacity=0.8,
        border_width=0.5,
        border_color="#333",
    ),
)

# 添加数据
data = [("北京市", 100)]
map3d.add(
    series_name="北京市",
    data_pair=data,
    label_opts=opts.LabelOpts(is_show=True),
)

# 设置全局选项
map3d.set_global_opts(
    title_opts=opts.TitleOpts(title="北京市 3D 地图"),
    visualmap_opts=opts.VisualMapOpts(is_show=True),
)

# 渲染地图
map3d.render("beijing_3D_map.html")

运行后会生成一个 HTML 文件打开即可查看 3D 地图效果

效果展示

2. 中国 3D 地图

以下是绘制中国 3D 地图的示例代码:

Python示例代码

from pyecharts.charts import Map3D
from pyecharts import options as opts

# 创建 3D 地图实例
map3d = Map3D()

# 添加中国地图
map3d.add_schema(
    maptype="china",
    itemstyle_opts=opts.ItemStyleOpts(
        color="#4e79a7",
        opacity=0.8,
        border_width=0.5,
        border_color="#333",
    ),
)

# 添加数据
data = [("北京市", 100), ("上海市", 80), ("广州市", 120)]
map3d.add(
    series_name="中国 3D 地图",
    data_pair=data,
    label_opts=opts.LabelOpts(is_show=True),
)

# 设置全局选项
map3d.set_global_opts(
    title_opts=opts.TitleOpts(title="中国 3D 地图"),
    visualmap_opts=opts.VisualMapOpts(is_show=True),
)

# 渲染地图
map3d.render("china_3d_map.html")

运行后生成的 HTML 文件可以查看中国 3D 地图

效果展示

四、高级示例:地球 3D 展示

以下是实现地球 3D 展示的示例代码:

Python示例代码

from pyecharts.charts import Map3D
from pyecharts import options as opts

# 创建 3D 地图实例
map3d = Map3D()

# 添加地球地图
map3d.add_schema(
    maptype="world",
    itemstyle_opts=opts.ItemStyleOpts(
        color="#4e79a7",
        opacity=0.8,
        border_width=0.5,
        border_color="#333",
    ),
)

# 添加数据
data = [("China", 100), ("USA", 80), ("Japan", 60)]
map3d.add(
    series_name="地球 3D 地图",
    data_pair=data,
    label_opts=opts.LabelOpts(is_show=True),
)

# 设置全局选项
map3d.set_global_opts(
    title_opts=opts.TitleOpts(title="地球 3D 地图"),
    visualmap_opts=opts.VisualMapOpts(is_show=True),
)

# 渲染地图
map3d.render("earth_3d_map.html")

运行后生成的 HTML 文件可以查看地球 3D 地图

效果展示

五、补充实例

1. 带有标记点的 3D 地图

Python示例代码

from pyecharts.charts import Map3D
from pyecharts import options as opts

# 创建 3D 地图实例
map3d = Map3D()

# 添加中国地图
map3d.add_schema(
    maptype="china",
    itemstyle_opts=opts.ItemStyleOpts(
        color="#4e79a7",
        opacity=0.8,
        border_width=0.5,
        border_color="#333",
    ),
)

# 添加数据和标记点
data = [
    ("北京市", 100),
    ("上海市", 80),
    ("广州市", 120),
    ("深圳市", 90),
]
map3d.add(
    series_name="中国 3D 地图",
    data_pair=data,
    label_opts=opts.LabelOpts(is_show=True),
)

# 添加标记点
map3d.add(
    series_name="标记点",
    data_pair=[("北京市", 100)],
    label_opts=opts.LabelOpts(is_show=True, position="top"),
)

# 设置全局选项
map3d.set_global_opts(
    title_opts=opts.TitleOpts(title="带有标记点的 3D 地图"),
    visualmap_opts=opts.VisualMapOpts(is_show=True),
)

# 渲染地图
map3d.render("china_3d_map_with_markers.html")

效果展示

2. 动态视觉效果的 3D 地图

Python示例代码

from pyecharts.charts import Map3D
from pyecharts import options as opts

# 创建 3D 地图实例
map3d = Map3D()

# 添加中国地图
map3d.add_schema(
    maptype="china",
    itemstyle_opts=opts.ItemStyleOpts(
        color="#4e79a7",
        opacity=0.8,
        border_width=0.5,
        border_color="#333",
    ),
)

# 添加数据
data = [
    ("北京市", 100),
    ("上海市", 80),
    ("广州市", 120),
    ("深圳市", 90),
]
map3d.add(
    series_name="中国 3D 地图",
    data_pair=data,
    label_opts=opts.LabelOpts(is_show=True),
)

# 设置视觉映射
map3d.set_global_opts(
    title_opts=opts.TitleOpts(title="动态视觉效果的 3D 地图"),
    visualmap_opts=opts.VisualMapOpts(
        is_show=True,
        min_=0,
        max_=200,
        orient="vertical",
        range_color=["#525252", "#737373", "#969696", "#BDBDBD", "#D9D9D9"],
    ),
)

# 渲染地图
map3d.render("china_3d_map_with_dynamic_visual.html")

效果展示

3. 自定义样式和颜色的 3D 地图

Python示例代码

from pyecharts.charts import Map3D
from pyecharts import options as opts

# 创建 3D 地图实例
map3d = Map3D()

# 添加中国地图
map3d.add_schema(
    maptype="china",
    itemstyle_opts=opts.ItemStyleOpts(
        color="#6959CD",
        opacity=0.9,
        border_width=0.8,
        border_color="#4B0082",
    ),
)

# 添加数据
data = [
    ("北京市", 100),
    ("上海市", 80),
    ("广州市", 120),
    ("深圳市", 90),
]
map3d.add(
    series_name="中国 3D 地图",
    data_pair=data,
    label_opts=opts.LabelOpts(is_show=True, color="#FFFFFF"),
)

# 设置全局选项
map3d.set_global_opts(
    title_opts=opts.TitleOpts(title="自定义样式和颜色的 3D 地图"),
    visualmap_opts=opts.VisualMapOpts(is_show=True),
)

# 渲染地图
map3d.render("china_3d_map_custom_style.html")

效果展示

4. 带有动画效果的 3D 地球

Python示例代码

import pyecharts.options as opts
from pyecharts.charts import MapGlobe
from pyecharts.globals import GeoType

# 自定义数据集(国家名称和人口数据)
custom_population = [
    ("China", 1444216107),
    ("India", 1380004385),
    ("USA", 331002651),
    ("Indonesia", 273523615),
    ("Pakistan", 220892340),
    ("Brazil", 212559417),
    ("Nigeria", 206139589),
    ("Bangladesh", 166303498),
    ("Russia", 145934462),
    ("Mexico", 128932753),
]

# 获取人口数据的最小值和最大值
data = [x for _, x in custom_population]
low, high = min(data), max(data)

# 创建 3D 地球实例
c = (
    MapGlobe(init_opts=opts.InitOpts(width="1400px", height="700px"))
    .add_schema()
    .add(
        maptype="world",
        series_name="World Population",
        data_pair=custom_population,
        is_map_symbol_show=False,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(
            min_=low,
            max_=high,
            range_text=["max", "min"],
            is_calculable=True,
            range_color=["lightskyblue", "yellow", "orangered"],
        )
    )
    .render("earth_3d_globe.html")
)

效果展示

六、函数参数总结

以下是 pyecharts Map3D 模块常用函数及其参数的总结:

函数名 参数说明
add_schema 设置地图的类型(如 "china"、"world")和样式选项(如颜色、透明度等)
add 添加数据对,包括系列名称和数据对(如城市名称和值)
set_global_opts 设置全局选项,如标题、视觉映射等
render 渲染地图为 HTML 文件

七、总结

通过 pyecharts 的 Map3D 模块,我们可以轻松实现各种 3D 地图的绘制,无论是城市地图、国家地图还是地球地图,都能通过简单的代码实现。希望本文能激发你的动手欲望,快来尝试吧!资源绑定附上完整资源供读者参考学习!


网站公告

今日签到

点亮在社区的每一天
去签到