我们在做数据可视化的过程中,可能需要使用到地图作为数据可视化的工具;
包括世界地图、国家地图、省市区地图等;
如果在你设置好颜色数据匹配后,可视化地图未显示对应数据的颜色,那么请检查是否出现以下情况:
1. 设置的数据区间未达到可视化数据的范围
比如: 北京人口:500人
可视化图例设置的上限为100人, 那么500不在0-100之间,就不会可视化出来
2. 地图内国家名称、省市区等名称是否符合pyecharts规范(内部定义的)
比如:北京----北京市
台湾---台湾省
内蒙古---内蒙古自治区
必须填写官方用命
这是两种最长出现的问题。
首先我给出一个实例代码:
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts, TitleOpts, LegendOpts
# 构建一个地图对象
map = Map()
# 数据
data = [
('北京市', 999),
('上海市', 599),
('台湾省', 300),
('湖南省', 299),
('河北省', 999),
('河南省', 868),
]
map.add("测试地图", data, maptype='china')
map.set_global_opts(
visualmap_opts=VisualMapOpts(
is_show=True,
is_piecewise=True,
pieces=[
{"min": 1, "max": 99, "label": "1-9", "color": "#CCFFFF"},
{"min": 100, "max": 399, "label": "100-399", "color": "#FF6666"},
{"min": 400, "max": 599, "label": "400-599", "color": "#990033"},
{"min": 600, "label": "600-", "color": "#889977"},
]
),
title_opts=TitleOpts(title="测试地图", pos_left='center', pos_bottom='2%'),
legend_opts=LegendOpts(is_show=True)
)
# 绘图
map.render(path='render.html')
数据可视化展示:
高级实例,注释加代码:
import json
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts, TitleOpts, LegendOpts
# 读取数据文件
with open('疫情.txt', 'r', encoding='utf-8') as f:
data = f.read()
# print(data)
# 关闭文件
# 取出各个省的数据
# json ---> python字典
data_py = json.loads(data)
# 取出省份
province_data_list = data_py['areaTree'][0]["children"]
# 组装每个省的确诊人数为元组,并封装入列表
list = []
for province_data in province_data_list:
province_name = province_data['name']
province_confirm = province_data['total']['confirm']
list.append([province_name, province_confirm])
# 由于各省市不够规范所以对数据进行规范处理 直辖市自治区特别行政区单独处理,省份统一处理
zizhiqu = ['内蒙古', '宁夏', '西藏', '新疆', '广西']
special_area = ['澳门', '香港']
municipality = ['北京', '上海', '重庆', '天津']
for pro in list:
if pro[0] in special_area:
pro[0] = pro[0] + '特别行政区'
elif pro[0] in municipality:
pro[0] = pro[0] + '市'
elif pro[0] in ['内蒙古', '西藏']:
pro[0] += '自治区'
elif pro[0] == '广西':
pro[0] = '广西壮族自治区'
elif pro[0] == '新疆':
pro[0] = '新疆维吾尔自治区'
elif pro[0] == '宁夏':
pro[0] = '宁夏回族自治区'
else:
pro[0] = pro[0] + '省'
# 创建地图对象
print(list)
map = Map()
# 添加数据 list可以是tuple 也可以是 list 不必要list转换为tuple
map.add("国内疫情", list, maptype='china')
# 设置全局配置选项 设置分段视觉映射
map.set_global_opts(
visualmap_opts=VisualMapOpts(
is_show=True,
is_piecewise=True,
pieces=[
{"min": 1, "max": 99, "label": "1-99", "color": "#CCFFFF"},
{"min": 100, "max": 299, "label": "100-299", "color": "#FF6666"},
{"min": 300, "max": 599, "label": "300-599", "color": "#990033"},
{"min": 600, 'max': 899, "label": "600-899", "color": "#889977"},
{"min": 900, 'max': 1299, "label": "900-1299", "color": "#88AA77"},
{"min": 1299, 'max': 1599, "label": "1299-1599", "color": "#AAAA77"},
{"min": 1599, "label": "1599-", "color": "#88AAAF"},
]
),
title_opts=TitleOpts(title='国内疫情地图', pos_left='center', pos_bottom='1%'),
legend_opts=LegendOpts(is_show=True)
)
# 绘图
map.render()