简介
要了解pyecharts,必须先理解echarts的概念。echarts是一个由百度开源的商业级数据图表,它是一个纯JavaScript的图表库,可以为用户提供直观生动,可交互,可高度个性化定制的数据可视化图表。通常在前端用于数据展示。pyecharts顾名思义,python实现绘制echarts图标的类库:geo、map。
此文章重点讲解pyecharts-geo类图(地理坐标系),支持在地理坐标系上绘制点,线等,常用来制作航行路线、标记事件地点等
一、安装
1、安装 pyecharts包
在线安装 | 离线安装 |
---|---|
pip install pyecharts==1.7.1 | 地址https://pypi.org/project/pyecharts/1.7.1/#files |
2、安装世界地理地图包:世界地图和 213 个国家,包括中国地图
在线安装 | 离线安装 |
---|---|
pip install echarts-countries-pypkg==0.1.6 | 地址https://pypi.org/project/echarts-countries-pypkg/#files |
3、安装世界城市包:地图扩展包,需要时再装。为了解决县级以下地区重名,所以官方没有在之前的五个地图包提供县区级以下的地点,但提供了这一个全球的地图数据扩展包,它就是帮助我们检索一些在之前的五个地图包中没有而你又需要用到的地点。
在线安装 | 离线安装 |
---|---|
pip install echarts-cities-pypkg==0.0.1 | 地址https://pypi.org/project/echarts-cities-pypkg/#files |
4、安装中国省级地图包:23 个省,5 个自治区
在线安装 | 离线安装 |
---|---|
pip install echarts-china-provinces-pypkg==0.0.3 | 地址https://pypi.org/project/echarts-china-provinces-pypkg/#files |
5、安装中国市级地图包:370 个中国城市
在线安装 | 离线安装 |
---|---|
pip install echarts-china-cities-pypkg==0.0.9 | 地址https://pypi.org/project/echarts-china-cities-pypkg/#files |
5、安装中国县级地图包:2882 个中国县·区
在线安装 | 离线安装 |
---|---|
pip install echarts-china-counties-pypkg==0.0.2 | 地址https://pypi.org/project/echarts-china-counties-pypkg/#files |
6、安装其它包:这两个包我没装,效果也出来了。网上都说让装,这个看自己取舍
在线安装 | 离线安装 | 描述 |
---|---|---|
pip install echarts-china-misc-pypkg==0.0.1 | 地址https://pypi.org/project/echarts-china-misc-pypkg/#files | 网上说是11 个中国区域地图,比如华南、华北。不过我没找到华南华北地区。。。 |
pip install echarts-united-kingdom-pypkg==0.0.1 | 地址https://pypi.org/project/echarts-united-kingdom-pypkg/#files |
注:离线安装时,wheel直接使用pip install xxx.whl
,tgz包解压后进入执行python setup.py install
二、参数讲解
参数 | 数据类型 | 描述 |
---|---|---|
name | 字符串 | 视角中心 |
series_name | 字符串 | 图例名称 |
data_pair | 列表 | 数据 |
type_ | 字符串 | 地图类型。geo地图有scatter、effectScatter、heatmap、lines四种可选择,默认"scatter" |
maptype | 字符串 | 地图限定区域,如world、china、河南、青岛市等 |
color | 字符串 | 属性颜色 |
curve | 浮点 | 连线弯曲度 |
opacity | 浮点 | 连线透明度 |
symbol | 字符串 | 图例涟漪属性(比如流程图的箭头形状,属性非必须) |
symbol_size | 整形&浮点型 | 图例(如点、线)大小,默认为12 |
trail_length | 整型&浮点型 | 特效尾迹的长度 |
scale | 整型&浮点型 | 涟漪大小,当type_="effectScatter"时才有效 |
title | 字符串 | 主标题 |
subtitle | 字符串 | 副标题 |
title_text_size | 整形&浮点型 | 主标题字体大小。默认为18 |
subtitle_text_size | 整形&浮点型 | 副标题字体大小。默认为12 |
is_show | 布尔类型 | 是否显示图例标签(隐藏/展开图例) |
zoom | 整形&浮点型 | 视角中心缩放倍数 |
is_animation | 布尔类型 | 是否开启动画,默认为True |
is_roam | 布尔类型 | 是否开启鼠标缩放和平移漫游。scale缩放、move平移、True都开启;默认为True |
geo_emphasis_color | 字符串 | 点击地图触发颜色 |
pos_right | 字符串 | 左右对齐方式,有right、left、center,参考值center |
pos_top | 字符串 | 上下对齐方式,百分比表示,参考值5% |
width | 字符串 | 画布宽度 |
height | 字符串 | 画布高度 |
background_color | 字符串 | 画布背景颜色,默认为 ‘#fff’ |
title_color | 字符串 | 主标题颜色,默认为’#000’ |
subtitle_color | 字符串 | 副标题颜色,默认为’#aaa’ |
border_color | 字符串 | 地图边界颜色,默认为’#111’ |
theme | 字符串 | 主题风格,详情https://blog.csdn.net/qq_41595507/article/details/102947622 |
add_coordinate | 方法 | pyecharts添加自定义坐标,三个参数分别是坐标名称、经度、纬度 |
三、样例
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import GeoType, ThemeType, SymbolType # Geo图的类型 主题 涟漪图形符号
# 吉林长春有朝阳区,北京也有朝阳区。为了不影响效果,将北京朝阳区换成了东城区
# 在python资源库查看包含朝阳字的地区:python包路径site-packages-pyecharts-datasets-json文件
data = [("海淀区", "1503"), ("东城区", "9540"), ("石景山区", "4820"), ("丰台区", "3670"), ("通州区", "6493")]
geo = (
Geo(init_opts=opts.InitOpts(width="1000px", height="800px", theme=ThemeType.DARK))
.add_schema(maptype="北京", # 如果改成china为有什么效果呢,可以试试哦!!!
itemstyle_opts=opts.ItemStyleOpts(color='white', border_color="#EE2C2C"),
zoom=1.5,
is_roam=True,
center=Geo().get_coordinate('海淀区'), # 视角中心
emphasis_itemstyle_opts=opts.ItemStyleOpts(color="#31708f"), # 高亮颜色
emphasis_label_opts=opts.LabelOpts(color="white") # 字体颜色
)
# 上面提到有重复的名称,可以手动添加一个新名字来代替朝阳区,比如北京朝阳区方法如下
.add_coordinate("北京朝阳区", 116.48548, 39.9484)
.add("店铺数量",
data,
type_=GeoType.EFFECT_SCATTER,
symbol_size=6,
)
.add("走直线",
[("海淀区", "东城区"), ("海淀区", "丰台区"), ("海淀区", "石景山区"), ("海淀区", "通州区")],
type_=GeoType.LINES,
effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW, symbol_size=6, color='#5f99bb'),
linestyle_opts=opts.LineStyleOpts(curve=0, color="#B0E2FF"))
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title="北京市", subtitle="数据大图", pos_right="center", pos_top="5%"))
)
geo.render()