pyechats是一个用于数据可视化的包。
Echats是百度开源的一个数据可视化js库,主要用于数据可视化,pyecharts 是一个用于生成Echarts图标的类库,实际上就是Echarts和Python的对接。
pyecharts支持python2与python3,如果使用的是python2.7,需要在代码顶部声明字符编码,否则会出现中文乱码问题。
#coding=utf-8
from __future__ import unicode_literals
anaconda中没有自带pyecharts,需要单独进行安装。
1 pip install pyecharts
引用包
from pyecharts import Bar
引用包有报错:
ERROR:lml.utils:failed to import pyecharts_snapshot
Traceback (most recent call last):
File "c:\users\sheng\appdata\local\programs\python\python36-32\lib\site-packages\lml\utils.py", line 43, in do_import
plugin_module = __import__(plugin_module_name)
ModuleNotFoundError: No module named 'pyecharts_snapshot'
按照提示进行安装对应的包,以及wheel包
pip install wheel
pip install pyecharts_snapshot
主题
pyecharts除了默认的白色底色和dark,还支持安装扩展包
pip install echarts-themes-pypkg
echarts-themes-pypkg包提供了vintage
, macarons
, infographic
, shine
和 roma
主题
使用:
bar.use_theme('vintage')
将图片保存到本地
保存图片有两种方式,一种是点击图片右侧工具栏的下载按钮,保存格式为png,另一种是安装相关的包,通过render()方法保存到本地。
第一种没有什么好说的,这里说下第二种保存图片的方法。
pyecharts-snapshot插件可以将图片保存为png,gif,pdf等格式。
安装phantomjs:
npm install -g phantomjs-prebuilt
安装pyecharts-snapshost:
pip install pyecharts-snapshot
调用render方法保存图片
bar.render(path="snapshot.png")
注:
安装phantomjs时需要本地有nodejs环境,才能使用npm命令。
nodejs的安装参考:
https://nodejs.org/en/download/
基本使用方法
基本上所有的图的使用方法都是这样的:
- chart_type=Type() 初始化具体的图表对象
- chart_type.add() 添加数据及配置项
- chart_type.render() 生成.html文件
从v0.5.9开始,支持链式调用,如:
from pyecharts import Bar
CLOTHES = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
clothes_v1 = [5, 20, 36, 10, 75, 90]
clothes_v2 = [10, 25, 8, 60, 20, 80]
(bar=Bar("柱状图示例")
.add("商家A",CLOTHES,clothes_v1,is_stack=True)
.add("商家B",CLOTHES,clothes_v2,is_stack=True)
.render())
多次显示图表的推荐使用方法
从v0.4.0开始,pyecharts重构了渲染的内部逻辑,改善效率。推荐使用以下方式显示多个图表:
from pyecharts import Bar,Line
from pyecharts.engine import create_default_environment
bar=Bar("我的第一个图表","这里是一个副")
bar.add("服装",["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"],
[5,20,36,10,75,90])
line=Line("我的第一个图表","这里是一个副")
line.add("服装",["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"],
[5,20,36,10,75,90])
env=create_default_environment("html")
env.render_chart_to_file(bar,path="./bar.html")
env.render_chart_to_file(line,path="./line.html")
注:
create_default_environment(file_type)
file_type:'html','svg','png','jpeg','gif','pdf'
同样的,保存图片格式需要安装phantomjs包。
这里创建了两个对象,Bar和Line,这种方式使用了同一个引擎对象,减少了重复操作,速度有所提高,而使用Bar.render(),Line.render()则需要调用两次。
柱形图-Bar
attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
from pyecharts import Bar
bar=Bar("这是主","这是副")
bar.add(
"商家A",
attr,
v1,
is_stack=True
)
bar.add(
"商家B",
attr,
v2,
is_stack=True
)
bar.render("./MyFirstPyecharts.html") #指定生成html的路径,不指定会默认生成在当前路径下,命名为render.html
#多个bar同时指定is_stack为True,会实现叠加效果
Tip:
- add()方法中根据is_stack可以设定柱形图是否叠加显示
- is_more_utils=True 参数来设置最右侧工具栏,对生成的图进行更多的操作,如将柱形图更改为折线图等
- 标记的使用:mark_point=['average']标记点,平均值;mark_line=['min','max','average']标记线,最大值、最小值和平均值
- 横向柱形图:is_convert=True,标识交换X轴和Y轴
折线图-Line
from pyecharts import Line
line=Line("折线示例图")
line.add(
name,attr,v1,
is_symbol_show=True
)
饼图-Pie
散点图-Scatter
地图
在使用pyecharts制作地图展现时,会出现地图中只显示南海的问题。官方解释是为了缩减项目本身的体机以及维持pyecharts项目轻量化运行,pyecharts从0.3.2开始将不再自带地图js文件。所以我们需要安装一些包来解决。
pip install echarts-countries-pypkg --2M
pip install echarts-china-provinces-pypkg --748KB
pip install echarts-china-cities-pypkg --4M
pip install echarts-china-counties-pypkg --4.4M
pip install echarts-china-misc-pypkg --152KB
pip install echarts-united-kingdom-pypkg --1.3M
这里备注一下:
我之前是安装的anaconda,在使用conda install安装这些包时有报环境错误,我干脆把anaconda卸载了,然后更换了pip源为豆瓣的,pip install 安装成功!