Pyecharts是一款基于Echarts的Python可视化库,用于创建各种类型的交互式图表和地图可视化。Echarts是一种流行的JavaScript图表库,而Pyecharts则为Python用户提供了使用Echarts创建图表的接口, 通过Pyecharts,用户可以轻松地生成各种图表,包括折线图、柱状图、散点图、饼图等。其中,地图可视化是Pyecharts的一项强大功能,允许用户在地图上展示数据分布、热力图等信息,以直观的方式呈现地理数据
1. 世界地图生成
# 当前世界库存
from pyecharts import options as opts
from pyecharts.charts import Map
import random
# 设置当前拥核国家核武器库存
ultraman = [
['China', 350],
['France', 290],
['India', 160],
['Israel', 90],
['North Korea', 20],
['Pakistan', 165],
['Russia', 4477],
['United Kingdom', 180],
['United States', 3708]
]
# 设置曾经拥有核武器现在不在拥有核武器国家
monster = [
['South Africa', 0]
]
def create_world_map():
'''
作用:生成世界地图
'''
(
# 创建地图实例
Map()
# 添加当前拥核国家核武器库存数据
.add(
series_name="National stockpiles with nuclear weapons in 2022",
data_pair=ultraman,
maptype="world",
)
# 添加曾经拥有核武器现在不在拥有核武器国家数据
.add(
series_name="States that once possessed nuclear weapons",
data_pair=monster,
maptype="world",
)
# 全局配置项
.set_global_opts(
# 设置视觉映射的最大值
visualmap_opts=opts.VisualMapOpts(max_=5000, is_piecewise=True),
)
# 系列配置项
.set_series_opts(
# 设置标签名称是否显示,默认为True
label_opts=opts.LabelOpts(is_show=False
, color="blue")
)
# 生成本地html文件
.render("世界地图.html")
)
# 调用函数生成世界地图
create_world_map()
使用Pyecharts库创建了一个世界地图,展示了当前拥有核武器的国家及其库存量,同时突出显示曾经拥有核武器但现在不再拥有的国家。通过可视化方式生动呈现了全球核武器库存的分布情况
交互性体现在地图的可视化图表上。用户可以通过鼠标悬停或点击相关区域,实现信息的动态显示。对于曾经拥有核武器但现在不再拥有的国家,可以在地图上进行交互式操作,触发相应的信息,以及高亮显示效果
2. 中国地图生成
from pyecharts import options as opts
from pyecharts.charts import Map
# 提供的数据
data = {
'省/市': ['河南省', '广东省', '山东省', '四川省', '安徽省', '河北省', '贵州省', '湖南省', '广西壮族自治区',
'江西省', '湖北省', '江苏省', '陕西省', '山西省', '云南省', '浙江省', '甘肃省', '重庆市', '辽宁省',
'内蒙古自治区', '福建省', '黑龙江省', '新疆维吾尔自治区', '吉林省', '宁夏回族自治区', '北京市', '海南省',
'天津市', '上海市', '青海省', '西藏自治区'],
'2017年': [86.3, 75.7, 58.3, 58.3, 49.9, 43.6, 41.2, 41.1, 36.5, 36.5, 36.2, 33.0, 31.9, 31.7, 29.3, 29.1, 28.5,
21.1, 20.8, 19.8, 18.8, 18.8, 18.4, 14.3, 6.9, 6.0, 5.7, 5.7, 5.0, 4.6, 2.8]
}
def create_china_map():
'''
作用:生成中国地图
'''
# 数据处理,将省份名称和对应的高考人数组成元组列表
province_data = [(province, num) for province, num in zip(data['省/市'], data['2017年'])]
# 使用 Map 类生成地图
china_map = (
Map()
.add("2017年高考人数(万人)", province_data, "china")
.set_series_opts(
label_opts=opts.LabelOpts(is_show=False, formatter="{c}", position="inside")
)
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(max_=90, is_piecewise=True),
title_opts=opts.TitleOpts(title="2017年中国各省高考人数"),
)
)
# 生成本地html文件
china_map.render("中国高考人数地图.html")
create_china_map()
3. 重庆地图生成
from pyecharts import options as opts
from pyecharts.charts import Map
import random
chongqing_data = [ ['渝中区', 1560.91],['渝北区', 2297.11],['沙坪坝区', 1106.73], ['江北区', 1602.76],
['南岸区', 922.13],['大渡口区', 338.89],['九龙坡区', 1763.94],['北碚区', 742.01],
['巴南区', 1021.99],['璧山区', 920.95],['永川区', 1202.84],['涪陵区', 1504.37],['合川区', 1000.28],['江津区', 1330.02],
['长寿区', 918.63],['万州区', 1118.43],['荣昌区', 817.30],['大足区', 817.21],['綦江区', 770.79],['铜梁区', 733.63],
['开州区', 662.03],['梁平县', 577.16],['潼南区', 558.51],['云阳县', 557.69],['垫江县', 530.61],['忠县', 508.10],
['南川区', 421.42],['奉节县', 395.25],['丰都县', 391.17],['秀山县', 358.21],['彭水县', 282.13],['黔江区', 281.67],
['武隆县', 265.94],['酉阳县', 231.66],['巫山县', 222.24],['石柱县', 209.07],['巫溪县', 123.88],['城口县', 66.31]
]
def create_chongqing_map():
'''
作用:生成中国重庆地图
'''
(
# 创建地图实例
Map()
# 添加数据
.add(
series_name="GDP(亿元)",
data_pair=chongqing_data,
maptype="重庆", # 使用 "重庆" 作为地图类型
symbol=None,
)
# 全局配置项
.set_global_opts(
# 设置视觉映射的最大值
visualmap_opts=opts.VisualMapOpts(min_= 66.31, max_=2297.11, is_piecewise=True,
range_color=['#eff3ff', '#bdd7e7', '#6baed6', '#3182bd', '#08519c']),
title_opts=opts.TitleOpts(title="重庆全市各区县2022GDP"),
)
# 系列配置项
.set_series_opts(
# 设置标签名称是否显示,默认为True
label_opts=opts.LabelOpts(is_show=True, color="red"),
tooltip_opts=opts.TooltipOpts(formatter="{b}: {c} 亿元"),
)
# 生成本地html文件
.render("重庆地图.html")
)
# 调用函数生成中国重庆地图
create_chongqing_map()
在地图上,通过设置 is_show=True,显示了各区县的名称,提升了地图的可读性,但是由于地名重叠并不美观,可利用交互式操作,清晰显示数据
以下链接提供了一个中国县级地图的JavaScript库,可以与pyecharts结合使用,使用这个库来绘制中国的各个县级行政区划地图,以展示相关数据或信息
https://echarts-maps.github.io/echarts-china-counties-js/
4**. 往期推荐**
orange3一个不需要编程知识进行数据挖掘和机器学习的python工具箱
编程必备!Jupyter Notebook插件打造工作轻松体验
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~