pyecharts地图可视化攻略
Geo绘制散点图
先来看绘制一个简单的分布图。
分布图
假定我要绘制一个全国门店的分布图,下面代码中,cities为门店所在城市,values为对应各城市的门店数量
#coding=utf-8
from __future__ import unicode_literals
from pyecharts import Geo
cities = ['深圳','北京','广州','武汉','上海','南京','西安','成都']
values = [29,43,40,56,189,10,50,13]
geo = Geo('分布图',
title_color = '#fff',
title_pos = 'left',#将标题放置在最左边,其它值:center\right
width = 800,
height = 600,
background_color = '#404a59'
)
geo.add('全国门店分布',
cities,
values,
#type = 'effectScatter', #涟漪效果
visual_range = [0,200],
is_visualmap = True,
visual_text_color = '#fff',
symbol_size = 15,
symbol = 'pin', #图标样式
is_roam = True
)
geo.use_theme('dark') #地图主题
geo.render(path = 'map1.html')
网上流行了很多pyecharts做地图的方法,但大部分千篇一律,介绍不够详细,没有参数说明。当需要自定义一些内容时,找起来比较困难。
因此,以下根据自己的实践,简单记录下geo.add()方法中各参数的意义。
geo.add()方法参数
前面三个参数分别是name,attr,value,分别代表图例名称、属性及属性对应的值。
- symbol_size,符号大小,int
- symbol,符号,str,可选值有:circle、rect、roundRect、pin,arrow等
- geo_normal_color,地图正常状态的颜色,str
- geo_emphais_color,地图高亮状态的颜色,str
- type,地图类型,str,可选值有scatter、effectScatter、heatmap,默认为scatter。如果要实现点的动态涟漪效果,则使用effectScatter。
- geo_cities_coords,城市坐标,dict。这个在自定义坐标时非常有用。
- visual_range、is_visualmap:虚拟化视觉组件。
- maptype,官方介绍为地图类型,其实叫地图范围我觉得更合适。默认为china。这个参数貌似在Geo类上面无效。比如只显示广东省地图,尝试使用中文、拼音均无变化。
- legend_text_color,图例的文字颜色,str
- legend_text_size,图例字体大小,int
上面这段代码,通过虚拟视觉组件,实现了不同城市、不同数量的门店,用不同的颜色来区分显示。这个用起来真的很方便,可以不同的值进行分组表示。
散点大小区分-visual_type
上面的代码虽然对数量实现了分组显示,看起来比较炫,但是不够直观。缺点就是:不能很明了的展示不同地点在数量上的差异。
如果更倾向于展示数据量上的差异,可以使用Geo.add()方法的visual_type参数,设置
geo.add('全国门店分布'
cities,
values,
is_visualmap = True,
visual_type = 'size'
)
重复Geo.add()方法来添加系列
geo.add()方法可以重复用,使用一次,可以认为是在地图上添加了一个数据系列。
如我希望在地图上展示微信朋友圈的好友分布,并且按性别区分显示。我觉得使用系统来呈现更为合适。
#coding=utf-8
from __future__ import unicode_literals
from pyecharts import Geo
#男性朋友所在城市
cities1 = ['深圳','北京','广州','武汉','上海','南京','西安','成都']
#人数
values1 = [1,43,40,56,189,10,50,13]
#女性朋友所在城市
cities2 = ['杭州','苏州','东莞','南宁','重庆','长沙']
values2 = [1,43,40,56,189,10]
geo = Geo('朋友圈好友分布图',
title_color = '#fff',
title_pos = 'left',#将标题放置在最左边,其它值:center\right
width = 800,
height = 600,
background_color = '#404a59'
)
geo.add('男性朋友',
cities1,
values1,
#type = 'effectScatter', #涟漪效果
maptype = 'china',
visual_text_color = '#fff',
symbol_size = 15,
symbol = 'roundRect', #图标样式
is_roam = True
)
geo.add('女性朋友',
cities2,
values2,
#type = 'effectScatter', #涟漪效果
maptype = 'china',
visual_text_color = '#fff',
symbol_size = 20,
#symbol = 'pin', #图标样式
is_roam = True
)
geo.use_theme('dark') #地图主题
geo.render(path = 'map2.html')
Map
用来地理区域数据可视化
后面有空再写