pyecharts V0.3.0 发布日志

pyecharts V0.3.0 发布,这是一个重大更新的版本,新增 自定义模板模板函数web 框架整合 等功能,并修正了一些 Bug。

pyecharts V0.3.0 对整个图表渲染和使用场景进行重新思考和设计,重写大量的底层逻辑,使得功能更加明确,代码更加整洁有序。

1.开放底层模板引擎类 API,支持模板函数

新增模板引擎类 pyecharts.engine.EchartsEnvironment 和配置类 pyecharts.conf.PyEchartsConfig

# coding=utf8

from __future__ import unicode_literals

from pyecharts import Bar
from pyecharts.conf import PyEchartsConfig
from pyecharts.engine import EchartsEnvironment
from pyecharts.utils import write_utf8_html_file

attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
bar = Bar("柱状图数据堆叠示例")
bar.add("商家A", attr, v1, is_stack=True)
bar.add("商家B", attr, v2, is_stack=True)
config = PyEchartsConfig(echarts_template_dir='my_tpl', jshost='https://cdn.bootcss.com/echarts/3.6.2')
env = EchartsEnvironment(pyecharts_config=config)
tpl = env.get_template('tpl_demo.html')
html = tpl.render(bar=bar)
write_utf8_html_file('my_tpl_demo2.html', html)

pyecharts V0.3.0 提供了一些模板函数,这些函数通常接收一个或多个的 ChartPage 的参数,详细的调用形式见下表。

标签/调用形式 F(chart) F(page) F(chart1,chart2,...)/F(*page)
echarts_js_dependencies
echarts_js_dependencies_embed
echarts_container
echarts_js_content
echarts_js_content_wrap

2.重写图表 render 函数逻辑,新增自定义模板文件

render 函数签名为:

Chart.render(
    path='render.html',
    template_name='simple_chart.html',
    object_name='chart',
    extra_context=None
)

各参数的意义如下:

内部实现逻辑也有所变化:

3.新增统一配置函数 pyecharts.configure

新增统一的配置函数 pyecharts.configure ,在构建渲染图表之前使用该函数可统一配置你所需要的参数,每个参数都有默认值。

原有的 online 不再推荐使用,可用 configure 函数代替。

# 旧版本
pyecharts.online('http://demo') 
# 新版本
pyecharts.configure(jshost='http://demo')

4.支持 js 文件外链引用方式

在 HTML 代码中,js 引入方式共有两种,外部链接方式

<script type="text/javascript" src="https://cdn.bootcss.com/echarts/3.7.0/echarts.min.js"></script>

内部嵌入方式

<script type="text/javascript">
var s = '';
//...
</script>

在 V0.2.X 中,pyecharts 只支持内部嵌入方式,即使通过 pyecharts.online('https://cdn.bootcss.com/echarts/3.7.0') ,将 js 仓库设置为远程地址,最后生成的 HTML 代码也是使用内部嵌入方式,这不利于 web 项目的整合工作。

在 V0.3.0 中,上述行为将默认采用外部链接方式引入 js 文件,但其 js 文件有效性需由使用者自行保证;同时也可以通过 force_embed 参数强制采用内部嵌入方式。

5.Page 支持列表协议和自定义布局

pyecharts.custom.Page 直接继承 list 类,也能支持长度(len)、索引(index)、切片(splice)、添加(append)、扩展(extend)等操作。

相应的,Page 类移除了 charts 属性,目前可直接迭代 Page 对象本身。

Page 默认采用纵向列表布局渲染多个图表,可以通过使用自己的模板文件来采用其他布局。

6.更容易整合 web 框架

pyecharts 现在和 web 框架的整合工作变得十分容易,无论你是刚开始开发 web 项目还是整合已有的项目。这主要得益于 python 语言的灵活性和面向对象特点,使得整合工作不会破坏原有的功能和代码层次结构。

pyecharts 已经开放内部的 jinja2 模板引擎相关接口,因此从理论上来说,pyecharts 能够胜任那些使用 jinja2 模板引擎的 web 框架。

7.其他改变

其他微小变更,包括变量重命名、函数定义改变等。