推荐一个简单好用的SVG绘图库pygal

Thursday, November 8, 2012

pygal, 是一个Python的SVG绘图lib, 可以很方便的用来做数据可视化, 也很容易集成到项目当中来。

先来看个例子:

看看代码就这么几行

```python
>>> import pygal                                                       
>>> bar_chart = pygal.Bar()  
>>> bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])
>>> bar_chart.add('Padovan', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12])
>>> # 保存到文件
>>> bar_chart.render_to_file('bar_chart.svg')
>>> # 它还有个render_in_browser的方法, 直接输出到一个html文件,并在浏览器中显示
>>> bar_chart.render_in_browser()
file:///var/folders/47/zl40dfr57mddjn20xvwtz67m0000gn/T/tmpU9mNa7.html

集成到项目中

我们可以把图形svg内容输出embed到网页上就可以了

例子 (in Pyramid Base Web Application):

view

from pyramid.response import Response
from pyramid.view import view_config
import pygal

@view_config(route_name='svg')
def get_svg(request):
    bar_chart = pygal.Bar(width=600, height=400)
    bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])
    bar_chart.add('Padovan', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12])
    return Response(body=bar_chart.render(), content_type='image/svg+xml')

route config

config.add_route('svg', '/svg')

embed into html

<embed src="{{ req.route_url('svg')}}" type="image/svg+xml" width="600" height="400" />

这样就可以动态的输出svg数据图形到页面上了

This entry was tagged Pyramid, SVG, pygal and DataVisualization

comments powered by Disqus

© 2009-2013 lxneng.com. All rights reserved. Powered by Pyramid

go to Top