目录
简单案例:
进阶案例:
继上文数据可视化案例,今天学习用pyecharts练习数据可视化案例2-构建地图。
简单案例:
首先构建一个简单的地图。
代码:
import json from pyecharts.charts import Map map=Map() data=[ ('北京',99), ('上海',199), ('湖南',299), ('台湾',399), ('广东',499) ] map.add('地图',data,'china') map.render()
复制
效果图:
添加全局属性:
对我们设置了数据的省份设置不同梯度的颜色,颜色数值同样可以在“ac173.com”网站上(前端-RGB颜色对照)查看。
注意:json数据的地图没有地区名没有完整名称最新版的pyecharts无法识别,无法上色,(下面代码对此作了修改)。
import json from pyecharts.charts import Map from pyecharts.options import VisualMapOpts map=Map() data=[ ('北京市',99), ('上海市',199), ('湖南省',299), ('台湾省',399), ('广东省',499) ] map.add('地图',data,'china') map.set_global_opts( visualmap_opts=VisualMapOpts( is_show=True, # 颜色显示 is_piecewise=True, # 颜色分段 pieces=[ {'min':1,'max':9,'label':'1-9','color':'#564112'}, {'min':10,'max':99,'label':'1-9','color':'#563012'}, {'min':100,'max':500,'label':'1-9','color':'#561512'} ] ) ) map.render()
复制
效果图:
进阶案例:
全国疫情确诊人数地图构建
步骤:
1、打开json数据复制到ac173查看视图。
2、在pycharm中读取json数据文件
3、将json数据转化为python字典。
4、获取我们需要的数据(首先获取整体,再局部)。
5、构建地图。
6、设置全局属性(颜色梯度设置,标题设置等)。
完整代码:
import json from pyecharts.charts import Map from pyecharts.options import * # 读取文件 f=open('D:/疫情.txt','r',encoding="UTF-8") data=f.read() # 格式转化,转换为Python字典 data_dict=json.loads(data) # 获取整体数据 province_data_list = data_dict['areaTree'][0]['children'] # 获取具体的地区名和确诊人数,存入列表 data_list=[] for province_data in province_data_list: # 获取地区名 province_name=province_data['name'] special_province_list = ['北京市', '上海市', '天津市', '重庆市', '新疆维吾尔自治区', '宁夏回族自治区', '西藏自治区', '内蒙古自治区'] if province_name not in special_province_list: province_name += '省' # 获取地区确诊人数 province_confirm=province_data['total']['confirm'] # 存入列表中,别忘了列表内部为元组 data_list.append((province_name,province_confirm)) map=Map() map.add('各省份确诊人数',data_list,'china') # 设置全局选项 map.set_global_opts( title_opts=TitleOpts(title='全国疫情确诊图'), visualmap_opts=VisualMapOpts( is_show=True, # 颜色显示 is_piecewise=True, #分段 pieces=[ {'min':1,'max':99,'label':'1-99人','color':'#CCFFFF'}, {'min':100,'max':999,'label':'100-999人','color':'#FFFF99'}, {'min':1000,'max':4999,'label':'1000-4999人','color':'#FF9966'}, {'min':5000,'max':9999,'label':'5000-9999人','color':'#FF6666'}, {'min':10000,'max':99999,'label':'10000-99999人','color':'#CC3333'}, {'min':100000,'label':'100000+人','color':'#990033'} ] ) ) # 绘图 map.render('全国疫情地图.html')
复制
效果图:
以同样的方法尝试练习构建一个河南省的疫情确诊图吧。
代码:
import json from pyecharts.charts import Map from pyecharts.options import * # 读取文件 f=open('D:/疫情.txt','r',encoding="UTF-8") data=f.read() # 关闭文件 f.close() # 格式转化,转换为Python字典 data_dict=json.loads(data) # 获取数据 data_list=data_dict['areaTree'][0]['children'][3]['children'] # 循环列表获取市名和确诊人数 required_data_list=[] for city_data in data_list: city_name=city_data['name']+'市' # 追加市 city_confirm=city_data['total']['confirm'] required_data_list.append((city_name,city_confirm)) # 手动添加济源市数据 required_data_list.append(('济源',5)) # 构建地图 map=Map() # 向地图中添加数据 map.add('河南疫情确诊图',required_data_list,'河南') # 添加全局属性 map.set_global_opts( title_opts=TitleOpts(title='河南疫情确诊图'), visualmap_opts=VisualMapOpts( is_show=True, # 颜色显示 is_piecewise=True, #分段 pieces=[ {'min':1,'max':99,'label':'1-99人','color':'#CCFFFF'}, {'min':100,'max':999,'label':'100-999人','color':'#FFFF99'}, {'min':1000,'max':4999,'label':'1000-4999人','color':'#FF9966'}, {'min':5000,'max':9999,'label':'5000-9999人','color':'#FF6666'}, {'min':10000,'max':99999,'label':'10000-99999人','color':'#CC3333'}, {'min':100000,'label':'100000+人','color':'#990033'} ] ) ) map.render('河南省疫情确诊图.html')
复制
效果图: