echarts是百度开源的一款js的图表库,界面很酷炫,使用也不复杂。但还是不够pythonic,对吧。
pyecharts来了。
先看一个图,还不错对吧:
django里是可以直接支持的,
importmath
fromdjango.httpimportHttpResponse
fromdjango.templateimportloader
frompyechartsimportLine3D
frompyecharts.constantsimportDEFAULT_HOST
defindex(request):
template = loader.get_template('myfirstvis/pyecharts.html')
l3d = line3d()
context =dict(
myechart=l3d.render_embed(),
host=DEFAULT_HOST,
script_list=l3d.get_js_dependencies()
)
returnHttpResponse(template.render(context, request))
defline3d():
_data = []
fortinrange(,25000):
_t = t /1000
x = (1+0.25* math.cos(75* _t)) * math.cos(_t)
y = (1+0.25* math.cos(75* _t)) * math.sin(_t)
z = _t +2.0* math.sin(75* _t)
_data.append([x, y, z])
range_color = [
'#313695','#4575b4','#74add1','#abd9e9','#e0f3f8','#ffffbf',
'#fee090','#fdae61','#f46d43','#d73027','#a50026']
line3d = Line3D("3D line plot demo",width=1200,height=600)
line3d.add("", _data,is_visualmap=True,
visual_range_color=range_color,visual_range=[,30],
is_grid3D_rotate=True,grid3D_rotate_speed=180)
returnline3d
html里的模板如下,包括3个变量即可:
Proudly presented by PycCharts{% for jsfile_name in script_list %} {% endfor %} {}
有没有把问题复杂化,仁者见仁,相信后端的开发者会喜欢。
这原本就是html/js的模式,在网页里使用不算难事,但可否在GUI的程序里使用呢,如本文开头的图示就是pyqt里的调用。很自然想到是pyqt里嵌入图片,那就变成静态的了,echarts最大的优点是,它是动态图,你可以改变它的轴,时间,还是显示样式等。否则使用matplotlib就好了。
我们可以把pyecharts生成的html使用webview控件来呈现。
这里再引入一个库QtPy,
Provides an abstraction layer on top of the various Qt bindings (PyQt5, PyQt4 and PySide) and additional custom QWidgets.
它构建在pyqt5/pyside之上,还有一些自定义的控件。这个也不需要额外安装,anaconda里本来就有。
Qt慢慢淘汰了古老的Webkit ,用WebEngine框架代替掉了。Webengine与webkit不同的是它是基于Chromium引擎的,也就是集成谷歌的引擎。所以这里我们使用WebEngine。
如果说在网页里使用echarts也很容易的话,那要在gui的程序里使用,再自己去写js,然后一个个去拼成网页,那工作量大,且不好维护,那pyecharts就是一个神器了。
明天用真实的数据去展现一下。
关于作者:魏佳斌,互联网产品/技术总监,北京大学光华管理学院(MBA),特许金融分析师(CFA),资深产品经理/码农。偏爱python,深度关注互联网趋势,人工智能,AI金融量化。致力于使用最前沿的认知技术去理解这个复杂的世界。
本文来自企鹅号 - AI量化实验室媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文来自企鹅号 - AI量化实验室媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。