前言
前面两篇文章,我们主要介绍了绘制基本的地图以及数据展示图,其实我们可以在地图上绘制更多类型的图形,本文就来继续介绍在地图的基础上进行我们的数据可视化工作。
绘制轨迹图
每年春运,都是大部分的人从北上广深等发达地区回到广大的中西部地区,春节之后,再从广大的中西部地区回到北上广深等发达地区的过程,我们就可以分析一下人口流动的轨迹,绘制人口流动的轨迹图,这个时候,我们需要引入的就是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文件在浏览器打开如下图:
绘制密度图
每年我们都会看到各种不同的统计数据图,包括人口统计,经济统计,我们就可以看到不同的密度图,比如人口密度图和经济密度图,我们可以通过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文件在浏览器中打开如下图:
总结
本文主要介绍了使用pyecharts结合地图进行数据可视化的两个高级用法,一个是用于展示数据的流向,一个是用于展示数据的密度,希望本文能够帮到大家!