2022见证中国崛起从Python绘制中国地图开始:使用pyecharts最新版本绘制中国地图实例详解,个性化地图定制及常用参数解析

[ 系列文章篇 ]
Python 地图篇 - 使用 pyecharts 绘制世界地图、中国地图、省级地图、市级地图实例详解

第一章:实例演示

先给大家看下效果图哈。
在这里插入图片描述

① pyecharts 1.9.1 版本安装与数据准备

首先需要安装 pyecharts 库,直接 pip install pyecharts 就好了。
新版本的话不需要单独安装地图,如果是 0.5 版本是需要单独安装的,目前演示的是当前最新版本 1.9.1
地图数据如下:
因为是中国地图,所以对标的省份,我设置了 2 组,里面的数据是随机生成的。

# -*- 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)

② 添加数据项,默认中国地图显示

首先演示下添加一组数据,运行后会生成一个 html 文件,打开后就可以查看生成的地图了。
在这里插入图片描述

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

在这里插入图片描述
然后演示下添加两组数据,只要再加个 add() 函数就好了,非常方便。

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")
    )

在这里插入图片描述

③ 完整源码,可直接运行

给大家加了块完整源码,直接运行即可哈。

# -*- 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()

第二章:常用配置项及参数解析

① 设置是否默认选中

默认是选中的,添加 is_selected=False 参数可以设置默认不显示。

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()

可以看到默认只显示了怪兽的数据。
在这里插入图片描述

② 设置地图颜色类型是否分段显示

视觉映射配置项 visualmap_opts=opts.VisualMapOpts(max_=1000, is_piecewise=True) 可以设置为地图颜色类型分段显示,max_ 的值对应的是数据的范围,参数 is_piecewise=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")
    )

分段显示效果图:
在这里插入图片描述

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")
    )

这是参数为 is_piecewise=False 的标准显示。
在这里插入图片描述

③ 缩放平移配置

参数 is_roam=False 会控制不可进行鼠标缩放和平移。

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")
    )

参数启用时鼠标滚轮可以放大缩小图像。
在这里插入图片描述
鼠标可以左右拖动使地图平移。
优先级声明: a 数据设置为 Falseb 数据设置为 True,不选中 a 数据,也可以进行缩放和平移拖动。
在这里插入图片描述

④ 启用和关闭图形标记

参数 is_map_symbol_show=False 可以关闭图形标记,关闭就不显示点了。

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")
    )

可以看到奥特曼相关区域的点已经没有了。
在这里插入图片描述

⑤ 关闭标签名称显示、局部显示标签名

系列配置项的参数 label_opts=opts.LabelOpts(is_show=False) 可以关闭标签名称显示。

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")
    )

可以看到省份的名称不显示了。
在这里插入图片描述
label_opts=opts.LabelOpts(is_show=False) 添加到 add() 里,可以实现局部显示标签名的效果,显示标签的为另一组数据,可以根据此特性灵活进行应用。

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,
            # 局部关闭标签显示
            label_opts=opts.LabelOpts(is_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")
    )

可以看到局部省份的名称有显示。
在这里插入图片描述

⑥ 颜色设置:标签颜色、区域颜色、边框颜色

系列配置项里的标签加上 color="bule" 参数可设置标签颜色为蓝色。
图元样式配置的 areaColor 为区域颜色, borderColor 为边框颜色,
其中 normal 为常规模式下的,emphasis 为强调样式下的,即鼠标移动到区域上的显示。

# 图元样式配置
itemstyle_opts={
    # 常规显示
    "normal": {"areaColor": "white", "borderColor": "red"},
    # 强调颜色
    "emphasis": {"areaColor": "rgba(0,0,0,1)"}
}

可以看到我鼠标移动到新疆显示的为我设置的黑色,透明度为 1
在这里插入图片描述

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")
    )

⑦ 地图画布初始化大小配置

Map() 里通过添加 init_opts 参数可以配置初始化画布大小。
例如:Map(init_opts=opts.InitOpts(height="1000px", width="1500px"))
在这里插入图片描述
喜欢的点个赞❤吧!

雷达图(Radar Chart),也称为蜘蛛网图(Spider Chart)或星形图(Star Chart),是一种多变量数据可视化方式,通常用于比较多个变量或维度的相对关系。 Python使用`matplotlib`库可以绘制雷达图。下面我将为你详细讲解如何使用Python绘制雷达图。 首先,我们需要导入相关的库: ```python import numpy as np import matplotlib.pyplot as plt ``` 接下来,我们需要准备数据。假设我们要绘制一个学生的五项能力评估雷达图,其中包括语文、数学、英语、体育和艺术五个维度的得分: ```python labels = np.array(['语文', '数学', '英语', '体育', '艺术']) data = np.array([90, 80, 85, 70, 60]) ``` 然后,我们需要计算出每个维度在雷达图中的角度。因为雷达图是一个圆形,所以每个维度的角度应该是均分360度,即每个角度应该是`360 / 数据维度个数`。代码如下: ```python angles = np.linspace(0, 2*np.pi, len(labels), endpoint=False) angles = np.concatenate((angles, [angles[0]])) ``` 接下来,我们需要将数据和角度转换成极坐标系下的坐标。这里我们可以使用`np.vstack()`函数将数据和第一个数据点组合起来,再使用`np.cos()`和`np.sin()`函数计算出每个数据点的坐标。代码如下: ```python data = np.concatenate((data, [data[0]])) coords = np.vstack((angles, data)).T coords = np.concatenate((coords, [coords[0]])) ``` 最后,我们可以使用`matplotlib`的`plot()`函数绘制出雷达图。代码如下: ```python fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True)) ax.plot(angles, data, 'o-', linewidth=2) ax.fill(coords[:, 0], coords[:, 1], alpha=0.25) ax.set_thetagrids(angles * 180/np.pi, labels) ax.set_title('学生五项能力评估') ax.grid(True) ``` 完整的代码如下: ```python import numpy as np import matplotlib.pyplot as plt labels = np.array(['语文', '数学', '英语', '体育', '艺术']) data = np.array([90, 80, 85, 70, 60]) angles = np.linspace(0, 2*np.pi, len(labels), endpoint=False) angles = np.concatenate((angles, [angles[0]])) data = np.concatenate((data, [data[0]])) coords = np.vstack((angles, data)).T coords = np.concatenate((coords, [coords[0]])) fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True)) ax.plot(angles, data, 'o-', linewidth=2) ax.fill(coords[:, 0], coords[:, 1], alpha=0.25) ax.set_thetagrids(angles * 180/np.pi, labels) ax.set_title('学生五项能力评估') ax.grid(True) plt.show() ``` 运行代码,我们可以看到绘制出来的雷达图: ![雷达图](https://img-blog.csdnimg.cn/20211104121534521.png) 这个雷达图表示该学生在语文、数学、英语、体育和艺术五个维度上的得分情况,可以用于对比不同学生在这五个维度上的能力。
评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挣扎的蓝藻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值