软件测试/人工智能|Python数据可视化神器pyecharts教程(三)

举报
霍格沃兹测试开发 发表于 2023/12/11 19:16:06 2023/12/11
【摘要】 前言前面两篇文章,我们主要介绍了绘制基本的地图以及数据展示图,其实我们可以在地图上绘制更多类型的图形,本文就来继续介绍在地图的基础上进行我们的数据可视化工作。 绘制轨迹图每年春运,都是大部分的人从北上广深等发达地区回到广大的中西部地区,春节之后,再从广大的中西部地区回到北上广深等发达地区的过程,我们就可以分析一下人口流动的轨迹,绘制人口流动的轨迹图,这个时候,我们需要引入的就是Geo类,代...

前言

前面两篇文章,我们主要介绍了绘制基本的地图以及数据展示图,其实我们可以在地图上绘制更多类型的图形,本文就来继续介绍在地图的基础上进行我们的数据可视化工作。

绘制轨迹图

每年春运,都是大部分的人从北上广深等发达地区回到广大的中西部地区,春节之后,再从广大的中西部地区回到北上广深等发达地区的过程,我们就可以分析一下人口流动的轨迹,绘制人口流动的轨迹图,这个时候,我们需要引入的就是Geo类,代码如下:

from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType

# 创建一个 Geo 对象 c,Geo 是 pyecharts 库中用于生成地理坐标图的类
c = (
    Geo()
        # 使用 add_schema 方法添加地图的 schema,指定了地图类型为“中国”以及相关的样式选项
        .add_schema(
        maptype="china",
        itemstyle_opts=opts.ItemStyleOpts(),
    )
        # 使用 add 方法向地图添加数据,第一部分数据为散点图,显示的是各个城市的标记点,用白色显示
        .add(
        "",
        [("赣州", 50), ("广州", 60), ("杭州", 70), ("厦门", 80)],
        type_=ChartType.EFFECT_SCATTER,
        color="white", # 城市的标记点颜色为白色
    )
        # 使用 add 方法向地图添加另一部分数据,显示的是连接各个城市的线,箭头指向的方向表示行程的起点和终点
        .add(
        "人口流向",
        [("赣州", "广州"), ("赣州", "深圳"), ("赣州", "杭州"), ("赣州", "厦门")],
        type_=ChartType.LINES,
        effect_opts=opts.EffectOpts(
            symbol=SymbolType.ARROW, symbol_size=6, color="red"
        ),  # 线条效果选项,箭头大小为6,颜色为红色
        linestyle_opts=opts.LineStyleOpts(curve=0.2),  # 线条样式选项,曲线值为0.2
    )
        # 使用 set_series_opts 方法设置系列选项,不显示标签
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        # 使用 set_global_opts 方法设置全局选项,设置地图标题为“行程轨迹地图”
        .set_global_opts(title_opts=opts.TitleOpts(title="春运人口迁徙地图"))

)

# 渲染图表
c.render("春运人口迁徙图.html")  # 将图表渲染为HTML文件

运行代码,生成的HTML文件在浏览器打开如下图:

image.png

绘制密度图

每年我们都会看到各种不同的统计数据图,包括人口统计,经济统计,我们就可以看到不同的密度图,比如人口密度图和经济密度图,我们可以通过pyecharts绘制该图像,接下来给大家绘制一下人口密度图,代码如下:

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



# 定义一个名为 MAP_DATA 的列表,包含了江西省各市的名称和人口密度数据(截至2011年)
MAP_DATA = [
    ["南昌", 883],
    ["九江", 239],
    ["景德镇", 309],
    ["萍乡", 472],
    ["新余", 378],
    ["鹰潭", 325],
    ["赣州", 228],
    ["吉安", 175],
    ["宜春", 266],
    ["抚州", 190],
    ["上饶", 282]
]

# 定义一个名为 NAME_MAP_DATA 的字典,用于映射地图数据中的区域名称和实际的区域名称
NAME_MAP_DATA = {
    # "key": "value"  # 这个字典的键值对表示的是地图数据中的区域名称和实际的区域名称的对应关系
    "南昌市": "南昌",
    "九江市": "九江",
    "景德镇市": "景德镇",
    "萍乡市": "萍乡",
    "新余市": "新余",
    "鹰潭市": "鹰潭",
    "赣州市": "赣州",
    "吉安市": "吉安",
    "宜春市": "宜春",
    "抚州市": "抚州",
    "上饶市": "上饶"
}

# 创建一个 Map 对象 c,这是 pyecharts 库中用于生成地图的对象
c = (
    Map()

        # 使用 add 方法向地图添加数据和配置项,其中 series_name 是系列名称,maptype 是地图类型,data_pair 是数据对,name_map 是区域名称映射表,is_map_symbol_show 控制是否显示地图标记
        .add(
        series_name="江西省人口密度",
        maptype="江西",
        data_pair=MAP_DATA,
        name_map=NAME_MAP_DATA,
        is_map_symbol_show=False,
    )

        # 使用 set_global_opts 方法设置全局配置项,其中包括标题选项、工具提示选项和视觉映射选项
        .set_global_opts(
        title_opts=opts.TitleOpts(
            # 设置地图的标题
            title="江西省人口密度",
            # 设置地图的副标题,并给出副标题的链接
            subtitle="数据来自网络"
        ),
        tooltip_opts=opts.TooltipOpts(
            # 设置触发工具提示的方式为“item”,即鼠标移动到地图标记上时显示工具提示
            trigger="item",
            # 设置工具提示的格式,这里用 HTML 格式设置了行内样式,使得工具提示中显示地区名称和人口密度,并规定字体大小和颜色
            formatter="{b}<br/>{c} (p / km2)"
        ),
        visualmap_opts=opts.VisualMapOpts(
            # 设置视觉映射的最小值和最大值,这里设置为150和900
            min_=150,
            max_=900,
            # 设置视觉映射的文本范围,这里设置为"High"和"Low"
            range_text=["High", "Low"],
            # 设置视觉映射是否可计算,这里设置为 True 表示可以手动拖动滑块改变视觉映射的值
            is_calculable=True,
            # 设置视觉映射的颜色范围,这里设置为"lightskyblue"(浅天蓝色)、"yellow"(黄色)和"orangered"(橙红色)
            range_color=["lightskyblue", "yellow", "orangered"],
        ),
    )
)

# 渲染图表
c.render("人口密度地图.html")  # 将图表渲染为HTML文件

运行代码,生成的HTML文件在浏览器中打开如下图:

image.png

总结

本文主要介绍了使用pyecharts结合地图进行数据可视化的两个高级用法,一个是用于展示数据的流向,一个是用于展示数据的密度,希望本文能够帮到大家!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。