数据可视化之pyecharts

2020-01-19 10:51:59 浏览数 (1)

pyecharts介绍

pyechats是一个用于数据可视化的包。

Echats是百度开源的一个数据可视化js库,主要用于数据可视化,pyecharts 是一个用于生成Echarts图标的类库,实际上就是Echarts和Python的对接。

pyecharts支持python2与python3,如果使用的是python2.7,需要在代码顶部声明字符编码,否则会出现中文乱码问题。

代码语言:javascript复制
#coding=utf-8
from __future__ import unicode_literals

Pyecharts安装

anaconda中没有自带pyecharts,需要单独进行安装。

1 pip install pyecharts

各种图形的使用

引用包

代码语言:javascript复制
from pyecharts import Bar

引用包有报错:

代码语言:javascript复制
ERROR:lml.utils:failed to import pyecharts_snapshot
Traceback (most recent call last):
  File "c:usersshengappdatalocalprogramspythonpython36-32libsite-packageslmlutils.py", line 43, in do_import
    plugin_module = __import__(plugin_module_name)
ModuleNotFoundError: No module named 'pyecharts_snapshot'

按照提示进行安装对应的包,以及wheel包

代码语言:javascript复制
pip install wheel
pip install pyecharts_snapshot

主题

pyecharts除了默认的白色底色和dark,还支持安装扩展包

代码语言:javascript复制
pip install echarts-themes-pypkg

 echarts-themes-pypkg包提供了vintagemacaronsinfographicshine 和 roma 主题

 使用:

代码语言:javascript复制
bar.use_theme('vintage')

将图片保存到本地

保存图片有两种方式,一种是点击图片右侧工具栏的下载按钮,保存格式为png,另一种是安装相关的包,通过render()方法保存到本地。

第一种没有什么好说的,这里说下第二种保存图片的方法。

pyecharts-snapshot插件可以将图片保存为png,gif,pdf等格式。

安装phantomjs:

代码语言:javascript复制
npm install -g phantomjs-prebuilt

 安装pyecharts-snapshost:

代码语言:javascript复制
pip install pyecharts-snapshot

 调用render方法保存图片

代码语言:javascript复制
bar.render(path="snapshot.png")

 注:

安装phantomjs时需要本地有nodejs环境,才能使用npm命令。

nodejs的安装参考:

https://nodejs.org/en/download/

基本使用方法

基本上所有的图的使用方法都是这样的:

  1. chart_type=Type()  初始化具体的图表对象
  2. chart_type.add()     添加数据及配置项
  3. chart_type.render()  生成.html文件

从v0.5.9开始,支持链式调用,如:

代码语言:javascript复制
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重构了渲染的内部逻辑,改善效率。推荐使用以下方式显示多个图表:

代码语言:javascript复制
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

代码语言:javascript复制
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:

  1. add()方法中根据is_stack可以设定柱形图是否叠加显示
  2. is_more_utils=True 参数来设置最右侧工具栏,对生成的图进行更多的操作,如将柱形图更改为折线图等
  3. 标记的使用:mark_point=['average']标记点,平均值;mark_line=['min','max','average']标记线,最大值、最小值和平均值
  4. 横向柱形图:is_convert=True,标识交换X轴和Y轴

折线图-Line

代码语言:javascript复制
from pyecharts import Line
line=Line("折线示例图")
line.add(
    name,attr,v1,
    is_symbol_show=True
)

饼图-Pie

散点图-Scatter

地图

在使用pyecharts制作地图展现时,会出现地图中只显示南海的问题。官方解释是为了缩减项目本身的体机以及维持pyecharts项目轻量化运行,pyecharts从0.3.2开始将不再自带地图js文件。所以我们需要安装一些包来解决。

代码语言:javascript复制
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 安装成功!

0 人点赞