Pretty graphs and charts in Python

PythonGraphics

Python Problem Overview


What are the available libraries for creating pretty charts and graphs in a Python application?

Python Solutions


Solution 1 - Python

I'm the one supporting CairoPlot and I'm very proud it came up here. Surely matplotlib is great, but I believe CairoPlot is better looking. So, for presentations and websites, it's a very good choice.

Today I released version 1.1. If interested, check it out at CairoPlot v1.1

EDIT: After a long and cold winter, CairoPlot is being developed again. Check out the new version on GitHub.

Solution 2 - Python

For interactive work, Matplotlib is the mature standard. It provides an OO-style API as well as a Matlab-style interactive API.

Chaco is a more modern plotting library from the folks at Enthought. It uses Enthought's Kiva vector drawing library and currently works only with Wx and Qt with OpenGL on the way (Matplotlib has backends for Tk, Qt, Wx, Cocoa, and many image types such as PDF, EPS, PNG, etc.). The main advantages of Chaco are its speed relative to Matplotlib and its integration with Enthought's Traits API for interactive applications.

Solution 3 - Python

You can also use pygooglechart, which uses the Google Chart API. This isn't something you'd always want to use, but if you want a small number of good, simple, charts, and are always online, and especially if you're displaying in a browser anyway, it's a good choice.

Solution 4 - Python

You didn't mention what output format you need but reportlab is good at creating charts both in pdf and bitmap (e.g. png) format.

Here is a simple example of a barchart in png and pdf format:

from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.barcharts import VerticalBarChart

d = Drawing(300, 200)

chart = VerticalBarChart()
chart.width = 260
chart.height = 160
chart.x = 20
chart.y = 20
chart.data = [[1,2], [3,4]]
chart.categoryAxis.categoryNames = ['foo', 'bar']
chart.valueAxis.valueMin = 0

d.add(chart)
d.save(fnRoot='test', formats=['png', 'pdf'])

alt text

Note: the image has been converted to jpg by the image host.

Solution 5 - Python

Solution 6 - Python

I used pychart and thought it was very straightforward.

http://home.gna.org/pychart/

It's all native python and does not have a busload of dependencies. I'm sure matplotlib is lovely but I'd be downloading and installing for days and I just want one measley bar chart!

It doesn't seem to have been updated in a few years but hey it works!

Solution 7 - Python

Have you looked into ChartDirector for Python?

I can't speak about this one, but I've used ChartDirector for PHP and it's pretty good.

Solution 8 - Python

NodeBox is awesome for raw graphics creation.

Solution 9 - Python

If you like to use gnuplot for plotting, you should consider Gnuplot.py. It provides an object-oriented interface to gnuplot, and also allows you to pass commands directly to gnuplot. Unfortunately, it is no longer being actively developed.

Solution 10 - Python

Chaco from enthought is another option

Solution 11 - Python

You should also consider PyCha http://www.lorenzogil.com/projects/pycha/

Solution 12 - Python

I am a fan on PyOFC2 : http://btbytes.github.com/pyofc2/

It just just a package that makes it easy to generate the JSON data needed for Open Flash Charts 2, which are very beautiful. Check out the examples on the link above.

Solution 13 - Python

Please look at the Open Flash Chart embedding for WHIFF http://aaron.oirt.rutgers.edu/myapp/docs/W1100_1600.openFlashCharts and the amCharts embedding for WHIFF too http://aaron.oirt.rutgers.edu/myapp/amcharts/doc. Thanks.

Solution 14 - Python

You could also consider google charts.

Not technically a python API, but you can use it from python, it's reasonably fast to code for, and the results tend to look nice. If you happen to be using your plots online, then this would be an even better solution.

Solution 15 - Python

PLplot is a cross-platform software package for creating scientific plots. They aren't very pretty (eye catching), but they look good enough. Have a look at some examples (both source code and pictures).

The PLplot core library can be used to create standard x-y plots, semi-log plots, log-log plots, contour plots, 3D surface plots, mesh plots, bar charts and pie charts. It runs on Windows (2000, XP and Vista), Linux, Mac OS X, and other Unices.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsverrejohView Question on Stackoverflow
Solution 1 - PythonRodrigoView Answer on Stackoverflow
Solution 2 - PythonBarry WarkView Answer on Stackoverflow
Solution 3 - PythonTony MeyerView Answer on Stackoverflow
Solution 4 - PythonserbautView Answer on Stackoverflow
Solution 5 - PythonelmarcoView Answer on Stackoverflow
Solution 6 - PythontullamanView Answer on Stackoverflow
Solution 7 - PythonThomas OwensView Answer on Stackoverflow
Solution 8 - PythonMark CidadeView Answer on Stackoverflow
Solution 9 - PythonmhaggerView Answer on Stackoverflow
Solution 10 - PythonAzim JView Answer on Stackoverflow
Solution 11 - PythonMayowaView Answer on Stackoverflow
Solution 12 - PythonGourneauView Answer on Stackoverflow
Solution 13 - PythonAaron WattersView Answer on Stackoverflow
Solution 14 - PythonTylerView Answer on Stackoverflow
Solution 15 - PythonCristian CiupituView Answer on Stackoverflow