问题
ECharts
通过ECharts
实例的setOptions
方法添加option
(配置和数据)来生成图表,ECharts
官方示例往往也只提供opiton
部分内容,用户只用关心配置项的编写即可绘制图表。可不可以根据ECharts
的配置项,直接在pyecharts中生成图表呢?
解决方法
pyecharts
中的Base
类是所有图表类的基类,通过Base
类的options
属性即可传入ECharts
风格的配置项。
但是需要注意的是:**options
属性对应的数据结构是Python字典,ECharts
的配置项为JavaScript对象。**
因此必须将JavaScript对象转换为Python字典。大致有两种思路。
- 在JavaScript语言环境中,将配置项转换为JSON格式,然后通过Python内置的
json
库的json.loads
方法将JSON反序列化为Python字典。 - 直接将JavaScript对象转换为Python字典。Python内置库满足不了这种需求,通过第三方库
demjson
或pysjon5
可实现需求。
案例一:通过JSON格式传入配置
from pyecharts.charts.base import Base
options = {
'title': {
'text': 'ECharts 入门示例'
},
'tooltip': {},
'legend': {
'data': ['销量']
},
'xAxis': {
'data': ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
},
'yAxis': {},
'series': [{
'name': '销量',
'type': 'bar',
'data': [5, 20, 36, 10, 10, 20]
}]
}
chart = Base()
chart.options = options
chart.render()
案例二:将JavaScript对象转换为Python字典
注意去掉配置项最后的;
,否则转换失败。
from pyecharts.charts.base import Base
op='''
{
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
}
'''
import demjson
options = demjson.decode(op)
# import pyjson5
# options = pyjson5.loads(op)
chart = Base()
chart.options = options
chart.render()