大家好,我早起。如果你尝试用Python做可视化,你会发现用起来很爽,但是保存或者显示就有点麻烦了。以pyehcharts为例,如果在需要显示的时候,就地启动notebook执行代码,这应该是最麻烦的方式。另一种思路是将其导出为html或其他静态文件并打开显示。这也是一个好办法,但是如果图表很多呢?你会说pyecharts自带图表组合,将多个图表组合在一起输出到一个html,但是用过这个功能的人都会说,不仅不好用,而且添加一些自定义元素也很困难。当然,去年分享了一个结合PPT展示的教程,确实是个不错的选择,但也有点麻烦。所以,之前,我的一个解决方案就是把这一堆图表输出成html格式,然后用iframe嵌入到前端页面。当然这个是基于Django的,需要自己写前端样式,就像去年分享的疫情追踪一样但是大屏也逃不过Django这样的大佬。对于不熟悉的小白来说配置起来非常煎熬。有没有更优雅的方式?选择PyWebIO!或者把图表放在网页上,任何人都可以访问查看交互式图表和源代码,像这样?原视频如上图,无论是pyecharts还是plotly还是Bokeh都可以完美挂在网站上,按照自己预设的方式,保留部分交互功能和源码查看!更重要的是,我们可以自由排列组合页面内容,并根据需要添加更多的自定义元素!下面将介绍制作过程。怎么实现和上一篇一样,我们先想想怎么实现,是先生成html还是在打开页面的时候生成?其实是提前生成的,同时保留html和py脚本,所以最简单的pyecharts代码可以这样写"业务A",Faker.values()).add_yaxis("业务B",Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="Bar-BasicExample",subtitle="我是副标题")))c.width="100%"put_html(c.render_notebook())第一部分是pyecharts做图表的部分,不多解释,重要的是最后一行,通过put_html嵌入到PyWebIO中(),这样我们的图的脚本就做好了,接下来我们只需要做同样的事情就可以制作更多的图脚本了。下面是主要功能部分,如何嵌入和显示这些脚本,首先搜索所有脚本文件,然后使用open(html_file).read()打开之前生成的图表,然后使用put_collapse(t('显示源代码','查看源码'),put_code(code,'python'))预览代码,代码如下@use_scope('content',clear=True)defshow_demo(name):ifnamenotint(all_demos,all_demos_zh):returnwithuse_scope('loading'):put_text('Loading...')put_loading()base_dir=path.join(src_path,name)files=os.listdir(base_dir)forfileinfiles:ifnotfile.endswith('.py'):continuename=file[:-len(".py")]html_file=path.join(base_dir,'output',name)+'.html'try:code=open(path.join(base_dir,file))。read()html=open(html_file).read()except:continueput_html(html)#todo:ifthereis`open`calls,providethefilelinkput_collapse(t('Showsourcecode','Viewsourcecode'),put_code(code,'python'))scroll_to(position='top')clear('loading')最后用put_buttons()添加按钮put_buttons([(v,k)fork,vint(all_demos,all_demos_zh).items()],onclick=show_demo)然后启动项目看看我们做了什么显示页面start_server(pyecharts,port=8080,debug=True,auto_open_webbrowser=False)最终效果如下最后,只需将项目部署到服务器,你可以让任何人看到你的可视化项目,是不是很酷!当然,上面的讲解是基于pyecharts的,但其实适用于任何一个Python可视化库,只要制作方法一样,更重要的是,我们可以自由排列组合页面内容,添加根据需要添加更多自定义元素!本文代码参考官方文档(https://github.com/wang0618/pywebio-chart-gallery/tree/master/pyecharts_demo),有兴趣的读者可以下载试试!
