Pygal - 后端攻城狮再也不用被前端吐槽了

2017-05-04

后端攻城狮们,往往做了很多工作。最后还要找前端画图。一个矩阵是没有办法给你的 BOSS 或者投资人看的。 这期介绍 Python 绘图工具,当然 python 绘图的确很多。 比如: ggpy, PyGraphviz。 不过,今天介绍的是 ** pygal** 使用简单,而且是 svg(矢量图)

官方示例图

sexy python charting

安装推荐使用 pip 其他门路小伙伴自行研究吧!!
pip install pygal

小试牛刀

Pygal-horizontalline

line_chart = pygal.HorizontalLine()
line_chart.title = 'Browser usage evolution (in %)'
line_chart.x_labels = map(str, range(2002, 2013))
line_chart.add('Firefox', [None, None,    0, 16.6,   25,   31, 36.4, 45.5, 46.3, 42.8, 37.1])
line_chart.add('Chrome',  [None, None, None, None, None, None,    0,  3.9, 10.8, 23.8, 35.3])
line_chart.add('IE',      [85.8, 84.6, 84.7, 74.5,   66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1])
line_chart.add('Others',  [14.2, 15.4, 15.3,  8.9,    9, 10.4,  8.9,  5.8,  6.7,  6.8,  7.5])
line_chart.range = [0, 100]
line_chart.render()

Pygal 内置了14中样式,当然你也可以自定义

DarkStyle

from pygal.style import DarkStyle
chart = pygal.StackedLine(fill=True, interpolate='cubic', style=DarkStyle)
chart.add('A', [1, 3,  5, 16, 13, 3,  7])
chart.add('B', [5, 2,  3,  2,  5, 7, 17])
chart.add('C', [6, 10, 9,  7,  3, 1,  0])
chart.add('D', [2,  3, 5,  9, 12, 9,  5])
chart.add('E', [7,  4, 2,  1,  2, 10, 0])
chart.render()

** 最后, 可以直接嵌入 django 或者 flask**

  • 示例: 在 Django view 中
def line_chart_view(request):
   chart = pygal.Line()
   ...
   chart = chart.render_data_uri()
   return render_to_response( 'charts.html', {"chart": chart})

在 charts.html 模版中

<!-- Don't forget the "|safe"! -->
<div id="chart">
   <embed type="image/svg+xml" src= {{ chart|safe }} />
</div>

官方文档