mirror of https://github.com/Kozea/pygal.git
Florian Mounier
10 years ago
9 changed files with 337 additions and 8 deletions
@ -0,0 +1,197 @@ |
|||||||
|
Output |
||||||
|
====== |
||||||
|
|
||||||
|
pygal can generate multiple output formats. |
||||||
|
|
||||||
|
|
||||||
|
SVG |
||||||
|
--- |
||||||
|
|
||||||
|
String |
||||||
|
~~~~~~ |
||||||
|
|
||||||
|
The obvious output is the vectorial output in svg format: |
||||||
|
|
||||||
|
.. code-block:: python |
||||||
|
|
||||||
|
chart = pygal.Line() |
||||||
|
... |
||||||
|
chart.render() # Return the svg as bytes |
||||||
|
|
||||||
|
|
||||||
|
It can be rendered as unicode when specifying ``is_unicode=True`` or when ``disable_xml_declaration`` is used |
||||||
|
|
||||||
|
.. code-block:: python |
||||||
|
|
||||||
|
chart = pygal.Line() |
||||||
|
... |
||||||
|
chart.render(is_unicode=True) # Return the svg as a unicode string |
||||||
|
|
||||||
|
|
||||||
|
File |
||||||
|
~~~~ |
||||||
|
|
||||||
|
|
||||||
|
You can also write the chart to a file using ``render_to_file``: |
||||||
|
|
||||||
|
.. code-block:: python |
||||||
|
|
||||||
|
chart = pygal.Line() |
||||||
|
... |
||||||
|
chart.render_to_file('/tmp/chart.svg') # Write the chart in the specified file |
||||||
|
|
||||||
|
|
||||||
|
PNG |
||||||
|
--- |
||||||
|
|
||||||
|
With cairosvg installed you can directly get the png file using ``render_to_png``: |
||||||
|
|
||||||
|
.. code-block:: python |
||||||
|
|
||||||
|
chart = pygal.Line() |
||||||
|
... |
||||||
|
chart.render_to_png('/tmp/chart.png') # Write the chart in the specified file |
||||||
|
|
||||||
|
|
||||||
|
Etree |
||||||
|
----- |
||||||
|
|
||||||
|
|
||||||
|
It is possible to get the xml etree root element of the chart (or lxml etree node if lxml is installed) by calling the ``render_tree`` method: |
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: python |
||||||
|
|
||||||
|
chart = pygal.Line() |
||||||
|
... |
||||||
|
chart.render_tree() # Return the svg root etree node |
||||||
|
|
||||||
|
|
||||||
|
Browser |
||||||
|
------- |
||||||
|
|
||||||
|
With lxml installed you can use the ``render_in_browser`` method to magically make your chart appear in you default browser. |
||||||
|
|
||||||
|
.. code-block:: python |
||||||
|
|
||||||
|
chart = pygal.Line() |
||||||
|
... |
||||||
|
chart.render_in_browser() |
||||||
|
|
||||||
|
|
||||||
|
PyQuery |
||||||
|
------- |
||||||
|
|
||||||
|
If pyquery is installed you can get the pyquery object wrapping the chart by calling ``render_pyquery``: |
||||||
|
|
||||||
|
(This is mainly used for testing) |
||||||
|
|
||||||
|
.. code-block:: python |
||||||
|
|
||||||
|
chart = pygal.Line() |
||||||
|
... |
||||||
|
chart.render_pyquery() # Return pyquery object |
||||||
|
|
||||||
|
|
||||||
|
Flask response |
||||||
|
-------------- |
||||||
|
|
||||||
|
If you are using pygal in a flask app the ``render_response`` may come in handy: |
||||||
|
|
||||||
|
.. code-block:: python |
||||||
|
|
||||||
|
@app.route('/charts/line.svg') |
||||||
|
def line_route(): |
||||||
|
chart = pygal.Line() |
||||||
|
... |
||||||
|
return chart.render_response() |
||||||
|
|
||||||
|
|
||||||
|
Django response |
||||||
|
--------------- |
||||||
|
|
||||||
|
Same thing for django with ``render_django_response``. |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Table |
||||||
|
----- |
||||||
|
|
||||||
|
pygal also supports a html table export of given data using the ``render_table`` option: |
||||||
|
|
||||||
|
|
||||||
|
.. pygal-code:: |
||||||
|
|
||||||
|
line_chart = pygal.Bar() |
||||||
|
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.value_formatter = lambda x: '%.2f%%' % x if x is not None else '∅' |
||||||
|
|
||||||
|
|
||||||
|
Default |
||||||
|
~~~~~~~ |
||||||
|
|
||||||
|
.. pygal-table-code:: |
||||||
|
|
||||||
|
line_chart = pygal.Bar() |
||||||
|
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.value_formatter = lambda x: '%.2f%%' % x if x is not None else '∅' |
||||||
|
line_chart.render_table() |
||||||
|
|
||||||
|
|
||||||
|
Style |
||||||
|
~~~~~ |
||||||
|
|
||||||
|
.. pygal-table-code:: |
||||||
|
|
||||||
|
line_chart = pygal.Bar() |
||||||
|
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.value_formatter = lambda x: '%.2f%%' % x if x is not None else '∅' |
||||||
|
line_chart.render_table(style=True) |
||||||
|
|
||||||
|
|
||||||
|
Total |
||||||
|
~~~~~ |
||||||
|
|
||||||
|
.. pygal-table-code:: |
||||||
|
|
||||||
|
line_chart = pygal.Bar() |
||||||
|
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.value_formatter = lambda x: '%.2f%%' % x if x is not None else '∅' |
||||||
|
line_chart.render_table(style=True, total=True) |
||||||
|
|
||||||
|
|
||||||
|
Transposed |
||||||
|
~~~~~~~~~~ |
||||||
|
|
||||||
|
.. pygal-table-code:: |
||||||
|
|
||||||
|
line_chart = pygal.Bar() |
||||||
|
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.value_formatter = lambda x: '%.2f%%' % x if x is not None else '∅' |
||||||
|
line_chart.render_table(style=True, total=True, transpose=True) |
||||||
|
|
@ -0,0 +1,81 @@ |
|||||||
|
Table |
||||||
|
===== |
||||||
|
|
||||||
|
pygal also supports a html table export of given data using the ``render_table`` option: |
||||||
|
|
||||||
|
|
||||||
|
.. pygal-code:: |
||||||
|
|
||||||
|
line_chart = pygal.Bar() |
||||||
|
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.value_formatter = lambda x: '%.2f%%' % x if x is not None else '∅' |
||||||
|
|
||||||
|
|
||||||
|
Default |
||||||
|
------- |
||||||
|
|
||||||
|
.. pygal-table-code:: |
||||||
|
|
||||||
|
line_chart = pygal.Bar() |
||||||
|
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.value_formatter = lambda x: '%.2f%%' % x if x is not None else '∅' |
||||||
|
line_chart.render_table() |
||||||
|
|
||||||
|
|
||||||
|
Style |
||||||
|
----- |
||||||
|
|
||||||
|
.. pygal-table-code:: |
||||||
|
|
||||||
|
line_chart = pygal.Bar() |
||||||
|
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.value_formatter = lambda x: '%.2f%%' % x if x is not None else '∅' |
||||||
|
line_chart.render_table(style=True) |
||||||
|
|
||||||
|
|
||||||
|
Total |
||||||
|
----- |
||||||
|
|
||||||
|
.. pygal-table-code:: |
||||||
|
|
||||||
|
line_chart = pygal.Bar() |
||||||
|
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.value_formatter = lambda x: '%.2f%%' % x if x is not None else '∅' |
||||||
|
line_chart.render_table(style=True, total=True) |
||||||
|
|
||||||
|
|
||||||
|
Transposed |
||||||
|
---------- |
||||||
|
|
||||||
|
.. pygal-table-code:: |
||||||
|
|
||||||
|
line_chart = pygal.Bar() |
||||||
|
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.value_formatter = lambda x: '%.2f%%' % x if x is not None else '∅' |
||||||
|
line_chart.render_table(style=True, total=True, transpose=True) |
||||||
|
|
Loading…
Reference in new issue