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