我们在做数据可视化的过程中,可能需要使用到地图作为数据可视化的工具;
包括世界地图、国家地图、省市区地图等;
如果在你设置好颜色数据匹配后,可视化地图未显示对应数据的颜色,那么请检查是否出现以下情况:
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 jsonfrom 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()