• pygal and matplotlib(again)


    之前项目有用过pygal做chart图, 写代码很容易,几行代码就很做出一个看上去还不错的chart, 缺点是: 要调的再美观很难, Web上的交互效果较差. 在web上做可视化还是推荐采用Echarts或HighCharts  Javascript库.  

    碰到个需求, 需要在pptx中生成chart图, 这个需求没有交互性要求, 需要封装成web service, 因为之前有使用pygal的经验, 这次打算继续使用pygal. 总体思路, 使用pygal生成chart矢量图, 然后到导出成png图片文件, 最后再将图片合并到pptx中.

    参考文章 Creating Powerpoint Presentations with Python
    http://pbpython.com/creating-powerpoint.html


    ===================
    pygal
    ===================
    pygal导出png的功能, 需要安装tinycss, cssselect, cairosvg(或pycairo)包.  tinycss, cssselect安装很简单. 对于cairosvg(或pycairo)包, pygal 推荐的是cairosvg, 好像是因为cairosvg安装相对简单些, 但我发现这货安装也很复杂, python包的依赖比较多, 分别是:
        pycparser  
        cffi,
        cairocffi,
        cairosvg


    其中, cairocffi 用pip和easyinstall安装都未成功, 直接解压文件到site-packages, 完成安装.
    另外, CairoSVG 其实是 cairo C类库的binding, 所以还需要安装cairo库 , windows版编译版和安装见下面的so讨论.
    http://stackoverflow.com/questions/28211418/python-oserror-cannot-load-library-libcairo-so-2
    我按照 Sk8erPeter 的建议的步骤, 完成了全部的配置.


    下面是 pycairo 的windows 预编译版, 我暂时没用到, 也未做测试.
    http://www.salsabeatmachine.org/python/pycairo-win32-packages.html
    http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.8/pycairo-1.8.10.win32-py2.7.exe



    ===================
    matplotlib
    ===================
    我顺便调研了一下使用matplotlib如何在web上展现图片. matplotlib和pygal相比, 灵活性强多了, 功能更加强大, 几乎能画出任何类型的chart.  
    见Miguel 大牛的答复: http://stackoverflow.com/questions/20107414/passing-a-matplotlib-figure-to-html-flask

    20150915补记, 因为pygal限制太多, 项目最后采用了matplotlib, 另外首次使用了 Anaconda Python distribution, 感觉太爽了, 该有的库都有了.

  • 相关阅读:
    晋IT分享成长沙龙集锦
    Spring、Hibernate 数据不能插入到数据库问题解决
    fancybox关闭弹出窗体parent.$.fancybox.close();
    关于Javakeywordsynchronized——单例模式的思考
    MySQL Study之--MySQL压力測试工具mysqlslap
    cocos2d-x 3.3 之卡牌设计 NO.4 定时器的使用(清理内存)
    【v2.x OGE教程 16】 Modifier使用相关
    [Python网络编程]浅析守护进程后台任务的设计与实现
    hdu 4778 Gems Fight!
    nginx负载均衡向后台传递參数方法(后端也是nginxserver)
  • 原文地址:https://www.cnblogs.com/harrychinese/p/pygal_and_matplotlib.html
Copyright © 2020-2023  润新知