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

一、pyecharts 简介

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

二、安装与环境准备

首先,确保安装了 pyecharts 库:

bash

复制代码
pip install pyecharts

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

三、常见操作示例

1. 北京市 3D 地图

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

Python示例代码

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示例代码

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示例代码

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示例代码

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示例代码

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示例代码

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示例代码

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 地图的绘制,无论是城市地图、国家地图还是地球地图,都能通过简单的代码实现。希望本文能激发你的动手欲望,快来尝试吧!资源绑定附上完整资源供读者参考学习!

相关推荐
AIGC_北苏9 分钟前
DrissionPage爬虫包实战分享
爬虫·python·drissionpage
景天科技苑37 分钟前
【Rust宏编程】Rust有关宏编程底层原理解析与应用实战
开发语言·后端·rust·rust宏·宏编程·rust宏编程
YBCarry_段松啓1 小时前
uv:下一代 Python 包管理器
人工智能·python
yorushika_1 小时前
python打卡训练营打卡记录day45
开发语言·python·深度学习·tensorboard
封奚泽优1 小时前
使用Python进行函数作画
开发语言·python
fc&&fl1 小时前
大模型面试题总结
人工智能·python
aningxiaoxixi1 小时前
JAVA之 Lambda
java·开发语言
databook1 小时前
稀疏表示与字典学习:让数据“瘦身”的魔法
python·机器学习·scikit-learn
Sheeep2 小时前
学习Pytest + Hypothesis——能帮你发现你自己都没想到的 bug
python·测试
come112342 小时前
Claude 写 PHP 项目的完整小白教程
开发语言·php