pyecharts V0.5.0 发布日志

pyecharts V0.5.0 发布,这是一个重大更新的版本。pyecharts 支持 javascript 回调函数echarts 事件处理函数 ,进一步覆盖 ECharts 相关特性,为项目发展注入新的活力。

1.新增对 JavaScript 回调函数的支持

pyecharts 已经封装了底层相关逻辑,对使用者是透明的。因此你可以像之前一样的使用。将回调函数对象通过 add 方法赋值到 echarts 配置字典中,这里的回调函数需满足以下条件之一:

注意的是目前暂不支持 lambda 表达式。

例子:

from pyecharts import Bar


def label_formatter(params):
    return params.value + ' [Good!]'


attr = ["Jan", "Feb"]
v1 = [2.0, 4.9]
bar = Bar("Bar chart", "precipitation and evaporation one year")
bar.add("precipitation", attr, v1, is_label_show=True, label_formatter=label_formatter)
bar.render()

效果图

bar-label-formatter-preview

pyecharts 使用 pyecharts-javascripthon 封装底层的逻辑,实现了一个 Python-To-Javascript 语言翻译器。该翻译器依据环境采用不同的实现方式。 Python2.7-3.4 的用户使用时请确保系统可以联网。

Python 版本 模式
2.7 , 3.4 在线模式
3.5+ 本地模式

更多详细内容请参考 Translator 篇 以及 高级用法篇

2.支持 JavaScript 原生事件

Echarts 本身提供了 api/events 事件处理函数,主要通过 on 方式实现。

pyecharts 根据官方提供的 events 列表,提供了如下全局事件名变量。位于 pyecharts.echarts.events 模块中。

# Mouse Events
MOUSE_CLICK = "click"
MOUSE_DBCLICK = "dbclick"
MOUSE_DOWN = "mousedown"
MOUSE_OVER = "mouseover"
MOUSE_GLOBALOUT = "globalout"

# Other Events
LEGEND_SELECT_CHANGED = "legendselectchanged"
LEGEND_SELECTED = "legendselected"
LEGEND_UNSELECTAED = "legendunselected"
LEGEND_SCROLL = "legendscroll"
DATA_ZOOM = "datazoom"
DATA_RANGE_SELECTED = "datarangeselected"
TIMELINE_CHANGED = "timelinechanged"
TIMELINE_PLAY_CHANGED = "timelineplaychanged"
RESTORE = "restore"
DATA_VIEW_CHANGED = "dataviewchanged"
MAGIC_TYPE_CHANGED = "magictypechanged"
GEO_SELECT_CHANGED = "geoselectchanged"
GEO_SELECTED = "geoselected"
GEO_UNSELECTED = "geounselected"
PIE_SELECT_CHANGED = "pieselectchanged"
PIE_SELECTED = "pieselected"
PIE_UNSELECTED = "pieunselected"
MAP_SELECT_CHANGED = "mapselectchanged"
MAP_SELECTED = "mapselected"
MAP_UNSELECTED = "mapunselected"
AXIS_AREA_SELECTED = "axisareaselected"
FOCUS_NODE_ADJACENCY = "focusnodeadjacency"
UNFOCUS_NODE_ADJACENCY = "unfocusnodeadjacency"
BRUSH = "brush"
BRUSH_SELECTED = "brushselected"

使用方式如下,

#!/usr/bin/env python
# coding=utf-8
from __future__ import unicode_literals

import pyecharts.echarts.events as events
from pyecharts import Bar
from pyecharts_javascripthon.dom.functions import alert


def on_click():
    alert("点击事件触发")


def test_mouse_click():
    bar = Bar("我的第一个图表", "这里是副标题")
    bar.add(
        "服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90]
    )
    bar.on(events.MOUSE_CLICK, on_click)
    bar.render()

效果

关于点击事件更多详细内容请参考 高级用法篇

3.pyecharts-snapshot 紧密集成

为了方便 jupyter 用户导出 PDF,pyecharts-snapshot v0.1.4+ 从 pyecharts 的衍生库升级成了 pyecharts 的扩展库。把下面的语句加在你的现有的 notebook 顶部,重新运行一次,所有的图标将变成静态 png 图片,这样就可以无痛苦输出成 PDF 了。

from pyecharts import configure

configure(output_image='png')

同时,其他用户在装了 pyecharts-snapshot v0.1.4+ 之后,也可以尝试一下直接生成图片的新功能:

from pyecharts import Bar

attr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
bar = Bar("Bar chart", "precipitation and evaporation one year")
bar.add("precipitation", attr, v1, mark_line=["average"], mark_point=["max", "min"])
bar.add("evaporation", attr, v2, mark_line=["average"], mark_point=["max", "min"])
bar.render(path="render.png")  # <--- 重点在这里

4.重构 option 配置项代码

为了使代码结构更加合理,已将关于 echarts 配置项逻辑相关部分的代码文件移动至新的包 echarts 中,并重构了 option.py 文件的代码,将其中 axislabelline 配置部分抽象成单独的类。

5.重构数据访问接口

pyecharts 项目包含了一系列的地理地图数据,这些数据或者已经内置,或者需要额外安装和加载。

从 v0.5.0 开始,pyecharts 重构了内部代码,不再支持对原有数据存储对象进行修改,对外提供了这些数据的访问接口。

基于此,pyecharts.Geopyecharts.GeoLines 新增 add_coordinate 方法,用于新增一个自定义城市地理位置的功能。

更多详细内容请参考 数据集篇

6.其他更新