pycharts 数据可视化
Echarts 是一个由百度开源的数据可视化。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
特性
- 简洁的 API 设计,使用如丝滑般流畅,支持链式调用;
- 囊括了 30+ 种常见图表,应有尽有;
- 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab;
- 可轻松集成至 Flask,Sanic,Django 等主流 Web 框架;
- 高度灵活的配置项,可轻松搭配出精美的图表;
- 详细的文档和示例,帮助开发者更快的上手项目;
- 多达 400+ 地图文件,并且支持原生百度地图,为地理数据可视化提供强有力的支持
pycharts库安装
v0.5.x 和 V1 间不兼容,V1 是一个全新的版本。
- V0.5.x
支持 Python2.7,3.4+。0.5.x 版本将不再进行维护。 - V1
仅支持 Python3.6+,新版本系列将从 v1.0.0 开始、。
pip 安装
# 安装 v1 以上版本
$ pip install pyecharts -U
# 如果需要安装 0.5.11 版本的开发者,可以使用
# pip install pyecharts==0.5.11
调用
快速画图
- render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件,也可以传入路径参数,如 bar.render(“mycharts.html”)
- 官网图例代码中图例被封装成函数,函数可以直接调用render画图,func_.render()或者在jupyter中 func_render_notebook()直接展示
#生成 HTML
from pyecharts.charts import Bar
from pyecharts import options as opts
# V1 版本开始支持链式调用
bar = (
Bar()
.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])
.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
.set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况"))
)
#链式也写成
bar = (
Bar().add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]).add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105]) .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49]) .set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况"))
#输出hyml文件
bar.render()
#在 Jupyter notebook中显示图片
bar.render_notebook()
# 不习惯链式调用的开发者依旧可以单独调用方法
bar = Bar()
bar.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
bar.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
bar.set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况"))
bar.render()
- 渲染成图片文件( 使用 snapshot-selenium 渲染图片)
#生成图片
from snapshot_selenium import snapshot as driver
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot
def bar_chart() -> Bar:
c = (
Bar()
.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])
.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
.reversal_axis()
.set_series_opts(label_opts=opts.LabelOpts(position="right"))
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-测试渲染图片"))
)
return c
# 需要安装 snapshot-selenium 或者 snapshot-phantomjs
make_snapshot(driver, bar_chart().render(), "bar.png")
- 使用主题
pyecharts 提供了 10+ 种内置主题,开发者也可以定制自己喜欢的主题
from pyecharts.charts import Bar
from pyecharts import options as opts
# 内置主题类型可查看 pyecharts.globals.ThemeType
from pyecharts.globals import ThemeType
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
.add_yaxis("商家B", [15, 6, 45, 20, 35, 66])
.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
)
pyecharts图形修饰逻辑
- 选择数据
- 选择图的类型
- 加修饰
全局配置项:
- 全局配置项可通过 set_global_options 方法设置
- 如果要修改标题,需要找到标题的子类TitleOpts
- 引用标题子类TitleOpts,前面的系统将子类的名称小写,并用下划线分开,配置的书写都是基于下面的类进行命名的,调用举例:
bar.set_global_opts(title_opts = opts.TitleOpts(title=‘title_name’))
title_opts 书写规则:将子类的名称小写,并用下划线分开
TitleOpts 类名
class TitleOpts(
# 主标题文本,支持使用 \n 换行。
title: Optional[str] = None,
#Optional表示可有可无,
# 主标题跳转 URL 链接
title_link: Optional[str] = None,
)
- 引用继承关系的写法,在配置类里面引用另一个配置类的参数,在括号里面继续调用该配置类,命名规则和调用规则相同,嵌套调用。
bar.set_global_opts(xaxis_opts=opts.AxisOpts(max_=6,axisline_opts=opts.AxisLine_Opts(is_abow=False))) - 类的关系:
set_global_opts ——> xaxis_opts ——> axisline_opts - 所有的配置项最好写在一个set_global_opts中,不同的set_global_opts可能发生冲突
系统配置项
set_series_opts
-
标记点的标定:涉及到两个类,一个是MarkPointOpts标记点配置项(定义有没有标记),还有一个MarkPointItem记点数据项(定义标记的描述)。
-
set_series_opts(markpoint_Item(markpoint_opts))
-
有一些配置项可以不放在 set_series_opts和set_global_opts ,放在bar.add_yaxis()中,比如颜色,主题等。
-
有些配置项InitOpts 初始化配置项需要在图形函数中配置,比如说主题的设定
-
bar(init_opts = opts.InitOpts(theme=ThemeType.LIGHT))