pyecharts 是一个用于生成 Echarts 图表的类库。用 Echarts 生成的图可视化效果很不错,pyecharts库是用来与 Python 进行对接,方便在 Python 中直接使用数据生成图。
最新的Pyecharts库版本是v1,且与老版本 v0.5.X 是不兼容的,v0.5.X版本也已不再维护。新旧版本的Geo有着较大改动,本篇均是基于旧版本0.5.11
pyecharts的安装说明很简单,也有很多大佬写了过程,本篇不赘述,主要说一下指定版本的问题。
安装pyecharts
Pyecharts v1版本的安装可使用pip install pyecharts -U
Pyecharts v0.5.X版本的安装可使用pip install pyecharts==0.5.11
安装对应的地图拓展
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg
全球国家地图:echarts-countries-pypkg (1.9MB)
中国省级地图:echarts-china-provinces-pypkg (730KB)
中国市级地图:echarts-china-cities-pypkg (3.8MB)
中国区县地图:echarts-china-counties-pypkg
中国大区地图:echarts-china-misc-pypkg(如:华南、华北等)
1、创建Geo:geo=Geo()
geo=Geo()是画出地图的背景。
Geo(title,subtitle,width,height,title_pos,title_top,title_color,subtitle_color,title_text_size,subtitle_text_size,background_color,page_title,renderer,is_animation)
各参数说明如下。实际使用过程中,我们其实经常用到的就几个参数,如title,width,height,background_color,只要搞这几个基本就够用了,所有参数都有默认值,这意味着在最极端情况下,直接用Geo()也可以,不过画出来的就是一张白纸罢了。
Init docstring:
:param title:
主标题文本,支持换行,默认为 ""
:param subtitle:
副标题文本,支持换行,默认为 ""
:param width:
画布宽度,默认为 800(px)
:param height:
画布高度,默认为 400(px)
:param title_pos:
标题距离左侧距离,默认为'left',有'auto', 'left', 'right',
'center'可选,也可为百分比或整数
:param title_top:
标题距离顶部距离,默认为'top',有'top', 'middle', 'bottom'可选,
也可为百分比或整数
:param title_color:
主标题文本颜色,默认为 '#000'
:param subtitle_color:
副标题文本颜色,默认为 '#aaa'
:param title_text_size:
主标题文本字体大小,默认为 18
:param subtitle_text_size:
副标题文本字体大小,默认为 12
:param background_color:
画布背景颜色,默认为 '#fff'
:param page_title:
指定生成的 html 文件中 标签的值。默认为 'Echarts'
:param renderer:
指定使用渲染方式,有 'svg' 和 'canvas' 可选,默认为 'canvas'。
3D 图仅能使用 'canvas'。
:param extra_html_text_label:
额外的 HTML 文本标签,( 标签)。类型为 list,list[0] 为文本内容,
list[1] 为字体风格样式(选填)。如 ["this is a p label", "color:red"]
:param is_animation:
是否开启动画,默认为 True。V0.5.9+
举例子:
from pyecharts import Geo
geo =Geo("Geo地图示例", "副标题",width=500, height=500, title_pos='center',title_top=20, title_color="#2E2E2E",
subtitle_color='#aaa',title_text_size=16,subtitle_text_size=12,background_color='#EEEEE8',
page_title='Echarts',renderer='canvas',is_animation=True)
geo
2、geo.add_coordinate()新增坐标点
geo.add_coordinate()的作用就是新增,比如现在调用一张广州地图,现在要在显示一个特定的点“测试1”,像这样的点就必须用add_coordinate新增进去,否则会报错(ValueError: No coordinate is specified for 测试1)。
geo.add_coordinate(点名称,经度,纬度),3个参数都是必填项
geo.add_coordinate('测试点1',113.40,23.07)
3、geo.add()展示坐标点
geo.add()的作用就是将点展示到上面加载的地图上,add有一大堆的参数,最常用的是series_name、names、value、type、maptype、is_visualmap、visual_range、visual_text_color、symbol_size,其中series_name、names、value、maptype这四个是必填项
# 系列名称,用于 tooltip 的显示,legend 的图例筛选。
series_name: str,
# 数据项 (坐标点名称)
names:list
# 数据项 (坐标点值)
value: list
# Geo 图类型,有 scatter, effectScatter, heatmap, lines 4 种
type: 默认"scatter",
# 是否选中图例
is_selected: 默认True,
# 标记图形形状,circle,pin,rect,diamon,roundRect,arrow,triangle
symbol: 默认circle,
# 标记的大小
symbol_size: 默认12,
# 系列 label 颜色
color: 默认None,
# 是否是多段线,在画 lines 图情况下
is_polyline: 默认 False,
# 是否启用大规模线图的优化,在数据图形特别多的时候(>=5k)可以开启
is_large: 默认 False,
# 特效尾迹的长度。取从 0 到 1 的值,数值越大尾迹越长。
trail_length:默认 0.2
# 地图选择,如广东、广州、china
maptype
#不知道什么作用,只知道默认Ture
is_random
#是否开启鼠标缩放和平移漫游。'scale'缩放、'move'平移、'True'都开启
is_roam:默认True
#显示图例条
is_visualmap:默认True
#图例条范围
visual_range
#图例条颜色
visual_text_color
#常态下地图的颜色
geo_normal_color
#触发下地图的颜色(鼠标放在地图上)
geo_emphasis_color
#涟漪的多少,当type="effectScatter"时才有效
effect_scale
#显示标签
is_label_show
#标签颜色
label_text_color
#标签位置(inside,top,bottom,left,right)
label_pos:默认"inside"
#边界颜色
border_color
举例子
from pyecharts import Geo
districts=['荔湾区', '花都区', '番禺区','测试点1']
value = [ 200, 200,300,400]
geo =Geo("Geo地图示例", "副标题",width=500, height=500, title_pos='center',title_top=20, title_color="#2E2E2E",
subtitle_color='#aaa',title_text_size=16,subtitle_text_size=12,background_color='#EEEEE8',
page_title='Echarts',renderer='canvas',is_animation=True)
geo.add_coordinate('测试点1',113.40,23.07)
geo.add("系列名1",
districts, value,type="effectScatter",is_selected=True,symbol='circle',symbol_size=20,color=None,
maptype='广州',is_roam=True,is_visualmap=True, visual_range=[0,500],visual_text_color="#2E2E2E",
geo_normal_color="#323c48",geo_emphasis_color='#2a033d', effect_scale=3,
is_label_show=True,label_text_color="#00FF00",label_pos="inside"
)
geo.render("广州测试2.html")
geo
在这里有2个问题还没解决。第一、不知道is_random参数的作用,感觉不管是True或False都没影响;第二、如上图的series_name “系列名1”,不知道如何改变它的位置,如移动到左边右边等。
4、geo.render()保存文件
geo.render()很简单了,就是将地图保存为文件出来,render只有一个参数,就是path路径
geo.render("广州测试2.html")