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参数,设置参数值为’size’。如下

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')

好友分布图系列

pieces自定义图例数据范围

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人以上"}
        ]
)

Map

用来地理区域数据可视化

后面有空再写

GeoLines 炫酷的线路图

猜你喜欢

转载自blog.csdn.net/u012413551/article/details/86751170