先来看绘制一个简单的分布图。
假定我要绘制一个全国门店的分布图,下面代码中,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()方法中各参数的意义。
前面三个参数分别是name,attr,value,分别代表图例名称、属性及属性对应的值。
上面这段代码,通过虚拟视觉组件,实现了不同城市、不同数量的门店,用不同的颜色来区分显示。这个用起来真的很方便,可以不同的值进行分组表示。
上面的代码虽然对数量实现了分组显示,看起来比较炫,但是不够直观。缺点就是:不能很明了的展示不同地点在数量上的差异。
如果更倾向于展示数据量上的差异,可以使用Geo.add()方法的visual_type参数,设置参数值为’size’。如下
geo.add('全国门店分布'
cities,
values,
is_visualmap = True,
visual_type = 'size'
)
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')
Geo.add()方法的pieces参数,接受一个列表,可以自定义图例作用的数据范围。如我希望将朋友圈各省人数按照0-10、10-30、30-50、50以上来区分显示,可以使用该参数,参数值如下:
geo.add(
...,
is_visualmap=True,
is_piecewise=True,
pieces=[
{"min":0, "max": 9,"label": "<10人"},
{"min": 10, "max": 30, "label": "<30人"},
{"min": 31, "max": 50, "label": "<50人"},
{"min":51, "max": 200, "label": "100人以上"}
]
)
用来地理区域数据可视化
后面有空再写