php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 588|回复: 0

2022见证中国崛起从Python绘制中国地图开始:使用pyecharts最...

[复制链接]

2667

主题

2674

帖子

9482

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
6693
贡献
0
注册时间
2021-4-14
最后登录
2024-5-12
在线时间
673 小时
QQ
发表于 2022-1-18 17:08:29 | 显示全部楼层 |阅读模式
使用 pyecharts 绘制中国地图实例详解
第一章:实例演示
① pyecharts 1.9.1 版本安装与数据准备
② 添加数据项,默认中国地图显示
③ 完整源码,可直接运行
第二章:常用配置项及参数解析
① 设置是否默认选中
② 设置地图颜色类型是否分段显示
③ 缩放平移配置
④ 启用和关闭图形标记
⑤ 关闭标签名称显示
⑥ 颜色设置:标签颜色、区域颜色、边框颜色

第一章:实例演示
先给大家看下效果图哈。
image.png
① pyecharts 1.9.1 版本安装与数据准备
首先需要安装 pyecharts 库,直接 pip install pyecharts 就好了。
新版本的话不需要单独安装地图,如果是 0.5 版本是需要单独安装的,目前演示的是当前最新版本 1.9.1
地图数据如下:
因为是中国地图,所以对标的省份,我设置了 2 组,里面的数据是随机生成的。
[mw_shl_code=applescript,true]# -*- coding:utf-8 -*-
# 2022-1-14
# 作者:小蓝枣
# pyecharts地图

# 需要引用的库
from pyecharts import options as opts
from pyecharts.charts import Map
import random

# 设置奥特曼所存在的相关省份,并设置初始数量为0
ultraman = [
['四川', 0],
['台湾', 0],
['新疆', 0],
['江西', 0],
['河南', 0],
['辽宁', 0],
['西藏', 0]
]

# 设置怪兽存在的相关省份,并设置初始数量为0
monster = [
['广东', 0],
['北京', 0],
['上海', 0],
['江西', 0],
['湖南', 0],
['浙江', 0],
['江苏', 0]
]

def data_filling(array):
    '''
     作用:给数组数据填充随机数
    '''
    for i in array:
        # 随机生成1到1000的随机数
        i[1] = random.randint(1,1000)
        print(i)

data_filling(ultraman)
data_filling(monster)
[/mw_shl_code]
② 添加数据项,默认中国地图显示
首先演示下添加一组数据,运行后会生成一个 html 文件,打开后就可以查看生成的地图了。
image.png
[mw_shl_code=applescript,true]def create_china_map():
    '''
     作用:生成中国地图
    '''
    (
        Map()
        .add(
            series_name="怪兽",
            data_pair=monster,
            maptype="china",
        )
        # 设置标题
        .set_global_opts(title_opts=opts.TitleOpts(title="中国地图"))
        # 生成本地html文件
        .render("中国地图.html")
    )
[/mw_shl_code]
image.png
然后演示下添加两组数据,只要再加个 add() 函数就好了,非常方便。

[mw_shl_code=applescript,true]def create_china_map():
    '''
     作用:生成中国地图
    '''
    (
        Map()
        .add(
            series_name="奥特曼",
            data_pair=ultraman,
            maptype="china",
        )
        .add(
            series_name="怪兽",
            data_pair=monster,
            maptype="china",
        )
        # 设置标题
        .set_global_opts(title_opts=opts.TitleOpts(title="中国地图"))
        # 生成本地html文件
        .render("中国地图.html")
    )
[/mw_shl_code]
image.png
③ 完整源码,可直接运行
给大家加了块完整源码,直接运行即可哈。
[mw_shl_code=applescript,true]# -*- coding:utf-8 -*-
# 2022-1-14
# 作者:小蓝枣
# pyecharts地图

# 需要引用的库
from pyecharts import options as opts
from pyecharts.charts import Map
import random

# 设置奥特曼所存在的相关省份,并设置初始数量为0
ultraman = [
['四川', 0],
['台湾', 0],
['新疆', 0],
['江西', 0],
['河南', 0],
['辽宁', 0],
['西藏', 0]
]

# 设置怪兽存在的相关省份,并设置初始数量为0
monster = [
['广东', 0],
['北京', 0],
['上海', 0],
['江西', 0],
['湖南', 0],
['浙江', 0],
['江苏', 0]
]

def data_filling(array):
    '''
     作用:给数组数据填充随机数
    '''
    for i in array:
        # 随机生成1到1000的随机数
        i[1] = random.randint(1,1000)
        print(i)

data_filling(ultraman)
data_filling(monster)

def create_china_map():
    '''
     作用:生成中国地图
    '''
    (
        Map()
        .add(
            series_name="奥特曼",
            data_pair=ultraman,
            maptype="china",
        )
        .add(
            series_name="怪兽",
            data_pair=monster,
            maptype="china",
        )
        # 设置标题
        .set_global_opts(title_opts=opts.TitleOpts(title="中国地图"))
        # 生成本地html文件
        .render("中国地图.html")
    )

create_china_map()
[/mw_shl_code]
第二章:常用配置项及参数解析
① 设置是否默认选中
默认是选中的,添加 is_selected=False 参数可以设置默认不显示。
[mw_shl_code=applescript,true]def create_china_map():
    '''
     作用:生成中国地图
    '''
    (
        Map()
        .add(
            series_name="奥特曼",
            data_pair=ultraman,
            maptype="china",
            # 是否默认选中
            is_selected=False
        )
        .add(
            series_name="怪兽",
            data_pair=monster,
            maptype="china",
        )
        # 设置标题
        .set_global_opts(title_opts=opts.TitleOpts(title="中国地图"))
        # 生成本地html文件
        .render("中国地图.html")
    )

create_china_map()
[/mw_shl_code]
可以看到默认只显示了怪兽的数据。
image.png
② 设置地图颜色类型是否分段显示
视觉映射配置项 visualmap_opts=opts.VisualMapOpts(max_=1000, is_piecewise=True) 可以设置为地图颜色类型分段显示,max_ 的值对应的是数据的范围,参数 is_piecewise=True 表示为分段显示。
[mw_shl_code=applescript,true]def create_china_map():
    '''
     作用:生成中国地图
    '''
    (
        Map()
        .add(
            series_name="奥特曼",
            data_pair=ultraman,
            maptype="china",
            # 是否默认选中
            is_selected=True
        )
        .add(
            series_name="怪兽",
            data_pair=monster,
            maptype="china",
        )
        .set_global_opts(
        # 设置标题
        title_opts=opts.TitleOpts(title="中国地图"),
        # 设置分段显示
        visualmap_opts=opts.VisualMapOpts(max_=1000, is_piecewise=True)
        )
        # 生成本地html文件
        .render("中国地图.html")
    )
[/mw_shl_code]
分段显示效果图:
image.png [mw_shl_code=applescript,true]def create_china_map():
    '''
     作用:生成中国地图
    '''
    (
        Map()
        .add(
            series_name="奥特曼",
            data_pair=ultraman,
            maptype="china",
            # 是否默认选中
            is_selected=True
        )
        .add(
            series_name="怪兽",
            data_pair=monster,
            maptype="china",
        )
        .set_global_opts(
        # 设置标题
        title_opts=opts.TitleOpts(title="中国地图"),
        # 设置标准显示
        visualmap_opts=opts.VisualMapOpts(max_=1000, is_piecewise=False)
        )
        # 生成本地html文件
        .render("中国地图.html")
    )
[/mw_shl_code]
这是参数为 is_piecewise=False 的标准显示。
image.png
③ 缩放平移配置
参数 is_roam=False 会控制不可进行鼠标缩放和平移。
[mw_shl_code=applescript,true]def create_china_map():
    '''
     作用:生成中国地图
    '''
    (
        Map()
        .add(
            series_name="奥特曼",
            data_pair=ultraman,
            maptype="china",
            # 是否默认选中,默认为True
            is_selected=True,
            # 是否启用鼠标滚轮缩放和拖动平移,默认为True
            is_roam=False
        )
        .add(
            series_name="怪兽",
            data_pair=monster,
            maptype="china",
        )
        .set_global_opts(
        # 设置标题
        title_opts=opts.TitleOpts(title="中国地图"),
        # 设置标准显示
        visualmap_opts=opts.VisualMapOpts(max_=1000, is_piecewise=False)
        )
        # 生成本地html文件
        .render("中国地图.html")
    )

[/mw_shl_code]
参数启用时鼠标滚轮可以放大缩小图像。
image.png
鼠标可以左右拖动使地图平移。
优先级声明: a 数据设置为 False,b 数据设置为 True,不选中 a 数据,也可以进行缩放和平移拖动。
image.png
④ 启用和关闭图形标记
参数 is_map_symbol_show=False 可以关闭图形标记,关闭就不显示点了。
[mw_shl_code=applescript,true]def create_china_map():
    '''
     作用:生成中国地图
    '''
    (
        Map()
        .add(
            series_name="奥特曼",
            data_pair=ultraman,
            maptype="china",
            # 是否默认选中,默认为True
            is_selected=True,
            # 是否启用鼠标滚轮缩放和拖动平移,默认为True
            is_roam=True,
            # 是否显示图形标记,默认为True
            is_map_symbol_show=False
        )
        .add(
            series_name="怪兽",
            data_pair=monster,
            maptype="china",
        )
        .set_global_opts(
        # 设置标题
        title_opts=opts.TitleOpts(title="中国地图"),
        # 设置标准显示
        visualmap_opts=opts.VisualMapOpts(max_=1000, is_piecewise=False)
        )
        # 生成本地html文件
        .render("中国地图.html")
    )
[/mw_shl_code]
可以看到奥特曼相关区域的点已经没有了。
image.png
⑤ 关闭标签名称显示
系列配置项的参数 label_opts=opts.LabelOpts(is_show=False) 可以关闭标签名称显示。
[mw_shl_code=applescript,true]def create_china_map():
    '''
     作用:生成中国地图
    '''
    (
        Map()
        .add(
            series_name="奥特曼",
            data_pair=ultraman,
            maptype="china",
            # 是否默认选中,默认为True
            is_selected=True,
            # 是否启用鼠标滚轮缩放和拖动平移,默认为True
            is_roam=True,
            # 是否显示图形标记,默认为True
            is_map_symbol_show=False
        )
        .add(
            series_name="怪兽",
            data_pair=monster,
            maptype="china",
        )
        # 全局配置项
        .set_global_opts(
        # 设置标题
        title_opts=opts.TitleOpts(title="中国地图"),
        # 设置标准显示
        visualmap_opts=opts.VisualMapOpts(max_=1000, is_piecewise=False),
        )
        # 系列配置项
        # 关闭标签名称显示
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        # 生成本地html文件
        .render("中国地图.html")
    )
[/mw_shl_code]
可以看到省份的名称不显示了。
image.png
⑥ 颜色设置:标签颜色、区域颜色、边框颜色
系列配置项里的标签加上 color="bule" 参数可设置标签颜色为蓝色。
图元样式配置的 areaColor 为区域颜色, borderColor 为边框颜色,
其中 normal 为常规模式下的,emphasis 为强调样式下的,即鼠标移动到区域上的显示。
[mw_shl_code=applescript,true]# 图元样式配置
itemstyle_opts={
    # 常规显示
    "normal": {"areaColor": "white", "borderColor": "red"},
    # 强调颜色
    "emphasis": {"areaColor": "rgba(0,0,0,1)"}
}
[/mw_shl_code]
可以看到我鼠标移动到新疆显示的为我设置的黑色,透明度为 1。
image.png
[mw_shl_code=applescript,true]def create_china_map():
    '''
     作用:生成中国地图
    '''
    (
        Map()
        .add(
            series_name="奥特曼",
            data_pair=ultraman,
            maptype="china",
            # 是否默认选中,默认为True
            is_selected=True,
            # 是否启用鼠标滚轮缩放和拖动平移,默认为True
            is_roam=True,
            # 是否显示图形标记,默认为True
            is_map_symbol_show=False,
            # 图元样式配置
            itemstyle_opts={
                # 常规显示
                "normal": {"areaColor": "white", "borderColor": "red"},
                # 强调颜色
                "emphasis": {"areaColor": "rgba(0,0,0,1)"}
            }
        )
        .add(
            series_name="怪兽",
            data_pair=monster,
            maptype="china",
        )
        # 全局配置项
        .set_global_opts(
            # 设置标题
            title_opts=opts.TitleOpts(title="中国地图"),
            # 设置标准显示
            visualmap_opts=opts.VisualMapOpts(max_=1000, is_piecewise=False)
        )
        # 系列配置项
        .set_series_opts(
            # 标签名称显示,默认为True
            label_opts=opts.LabelOpts(is_show=True, color="blue")
        )
        # 生成本地html文件
        .render("中国地图.html")
    )
[/mw_shl_code]





上一篇:苹果 AR/VR 头显售价 12000 元起,网友:“买来能干啥?”
下一篇:vue3中使用swiper7
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-5-14 08:21 , Processed in 0.150799 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

快速回复 返回顶部 返回列表