2652
Comment: url fix
|
8723
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
The problem of how to display data in graphs and other visual representations is one of the most difficult ones, because of the wide variety of requirements from each user. As a result, no one solution has emerged, but many different packages are available. There are interfaces to existing plotting libraries, as well as Python-centered solutions. |
Over the years many different plotting modules and packages have been developed for Python. For most of that time there was no clear favorite package, but recently matplotlib has become the most widely used. Nevertheless, many of the others are still available and may suit your tastes or needs better. Some of these are interfaces to existing plotting libraries while others are Python-centered new implementations. |
Line 15: | Line 11: |
* [http://old.scipy.org/site_content/chaco Chaco] is a device-independent 2D plotting package based on the DisplayPDF API being developed for Python by [http://www.enthought.com/ Enthought] with support from the [http://www.stsci.edu/resources/ Space Science Telescope Institute]. |
* [http://matplotlib.sourceforge.net Matplotlib] is an Open Source plotting library designed to support interactive and publication quality plotting with a syntax familiar to Matlab users. Its interactive mode supports multiple windowing toolkits (currently: GTK, Tkinter, Qt, and wxWindows) as well as multiple noninteractive backends (PDF, postscript, SVG, antigrain geometry, and Cairo). Plots can be embedded within GUI applications or for non-interactive uses without any available display in batch mode. Matplotlib provides both a Matlab-like functional interface as well as an object oriented interface. The only shortcoming of Matplotlib is that it is difficult to use interactively (e.g., sometimes windows freeze, crash, or don't show up). * [http://home.gna.org/veusz/ Veusz] is a GPL scientific plotting package written in Python and PyQt, designed to create publication-quality output. Graphs are built up from simple components, and the program features an integrated command-line, GUI and scripting interface. Veusz can also be embedded in other Python programs, even those not using PyQt. * [http://code.enthought.com/chaco/ Chaco] is a device-independent 2D plotting package based on the DisplayPDF API being developed for Python by [http://www.enthought.com/ Enthought] |
Line 19: | Line 16: |
* Michael Haggerty has [http://monsoon.harvard.edu/~mhagger/download/ a Gnuplot module] which interfaces with [http://www.gnuplot.info the GNUPLOT package]. | * Michael Haggerty has [http://gnuplot-py.sourceforge.net/ a Gnuplot module] that interfaces with [http://www.gnuplot.info the GNUPLOT package]. |
Line 31: | Line 28: |
* [http://www.linmpi.mpg.de/dislin/ DISLIN] DISLIN is a high-level and easy to use graphics library for displaying data as curves, bar graphs, pie charts, 3D-color plots, surfaces, contours and maps. The software is available for several C, Fortran 77 and Fortran 90 compilers. For some operation systems, the programming languages Python and Perl are also supported by DISLIN. DISLIN is free for the Linux and FreeBSD operating systems and for the MS-DOS and Windows 95/NT compilers GCC, G77 and ELF90. Other DISLIN versions are available at low prices and can be tested free of charge. * [http://newcenturycomputers.net/projects/gdmodule.html gdmodule] GD is a graphics library for the creation of GIF pictures, written by Thomas Boutell. gdmodule is an Python extension for this library. It can do lines, arcs, fills, fonts and can also manipulate other GIF pictures. Included in the gdmodule is a graphing module, which can produce line plots from data. * [ftp://ftp-icf.llnl.gov/pub/python Gist] Extension to the gist graphics library, which is part of another numeric environment named [ftp://ftp-icf.llnl.gov/pub/Yorick yorick]. It can produce line, contour, surface plots on quadrilateral meshes. On top of the low-level interface the people from LLNL have build an object-oriented interface which can also do isosurface and 3D slicing plots together with light and script based animation. The interface is well documented. The package is now part of the LLNL Python distribution. Gist originally ran only under Unix-like operating systems. The latest source and a Windows installer are available from the [http://bonsai.ims.u-tokyo.ac.jp/~mdehoon/software/python/ University of Tokyo]. * [http://www.astro.caltech.edu/~tjp/pgplot/ pgplot] Extension to the pgplot graphics library, a portable, device independent graphics package for making simple scientific graphs. The library is intended for making graphical images of publication quality with minimum effort on the part of the user. All functions are directly callable from Python, through the use of SWIG for wrapper code generation. Pgplot has drivers for many different graphics formats and devices, although there are problems with the MS-Windows driver. * [http://people.freebsd.org/~rhh/py-opendx/index.html Py-OpenDX] OpenDX is the open-source version of the IBM Data Explorer (DX). DX is a visualization system providing a full set of tools for manipulating, rendering and animating data, especially 3D data from simulations or acquired from observations. It provides a GUI, a scripting interface and the API C libraries. Py-OpenDX is a Python binding for the OpenDX API. Currently only the DXLink library is wrapped. That wrapper allows one to start up a DX executive and communicate with it via the DXL API. * [http://public.kitware.com/VTK/ VTK] VTK is an OO-framework for visualisation, written in C++ with bindings to TCL, Python and Java. It's not really a plotting package, but a visualisation system, where one needs to program to get a picture. It's very huge and resource demanding and best used on hardware with good graphics performance. It uses mainly OpenGL for rendering, so it can not produce vector graphics or high quality postscript output. Besides of that VTK is very powerful and can produce really great views of your data. * [http://rpy.sourceforge.net/ RPy] -- a Python interface to [http://www.r-project.org the R programming language]. R is a large, robust package for doing math and statistics; it includes many, many graphing options. * [http://www.omegahat.org/RSPython/ R/SPlus Python Interface]. Another R interface. Currently it allows Python code to call [http://www.r-project.org/ R] functions, and write R code to create Python objects and call Python functions and methods. This allows Python programmers unfamiliar with the syntax of R to easily use its functionality. * [http://pyx.sourceforge.net PyX] is a library for creating figures in Postscript and PDF, which uses TeX/LaTeX for the text output. * [http://biggles.sourceforge.net/ Biggles] is another plotting library that supports multiple output formats, as is [http://piddle.sourceforge.net/ Piddle]. * [http://home.gna.org/pychart/ Pychart] is a library for creating EPS, PDF, PNG, and SVG charts. It supports line plots, bar plots, range-fill plots, and pie charts. * [http://www.pyngl.ucar.edu/ PyNGL] is a Python interface to the high quality 2D scientific visualizations in the [http://www.ncl.ucar.edu NCAR Command Language] (NCL). |
Graphical Representations of Data
Over the years many different plotting modules and packages have been developed for Python. For most of that time there was no clear favorite package, but recently matplotlib has become the most widely used. Nevertheless, many of the others are still available and may suit your tastes or needs better. Some of these are interfaces to existing plotting libraries while others are Python-centered new implementations.
Image Processing and Analysis
The [http://www.pythonware.com/downloads.htm#pil PIL Toolkit] provides a very powerful set of tools for manipulating images. [http://www.pythonware.com/library/pil/handbook/index.htm Documentation]
Plotting Tools
[http://matplotlib.sourceforge.net Matplotlib] is an Open Source plotting library designed to support interactive and publication quality plotting with a syntax familiar to Matlab users. Its interactive mode supports multiple windowing toolkits (currently: GTK, Tkinter, Qt, and wxWindows) as well as multiple noninteractive backends (PDF, postscript, SVG, antigrain geometry, and Cairo). Plots can be embedded within GUI applications or for non-interactive uses without any available display in batch mode. Matplotlib provides both a Matlab-like functional interface as well as an object oriented interface. The only shortcoming of Matplotlib is that it is difficult to use interactively (e.g., sometimes windows freeze, crash, or don't show up).
[http://home.gna.org/veusz/ Veusz] is a GPL scientific plotting package written in Python and PyQt, designed to create publication-quality output. Graphs are built up from simple components, and the program features an integrated command-line, GUI and scripting interface. Veusz can also be embedded in other Python programs, even those not using PyQt.
[http://code.enthought.com/chaco/ Chaco] is a device-independent 2D plotting package based on the DisplayPDF API being developed for Python by [http://www.enthought.com/ Enthought]
Konrad Hinsen has some plotting support in his [http://starship.python.net/~hinsen/ScientificPython/ ScientificPython] package, for example TkPlotCanvas.
Michael Haggerty has [http://gnuplot-py.sourceforge.net/ a Gnuplot module] that interfaces with [http://www.gnuplot.info the GNUPLOT package].
[http://php.iupui.edu/~mmiller3/python/#plotwrap plot_wrap] A module by Mike Miller which wraps the functions in [http://www.gnu.org/software/plotutils/plotutils.html the GNU plotutils] package.
[http://www.tcltk.com/blt/ BLT] BLT is an extension to the tk widgets that can produce X/Y plots and bar charts. The BLT package can be used through [http://pmw.sourceforge.net/ the Pmw package], a framework for the creation of megawidgets built on top of Tkinter.
[http://pyqwt.sourceforge.net/ PyQwt] is a set of Python bindings for the Qwt C++ class library which extends the Qt framework with widgets for scientific and engineering applications.
[http://www.linmpi.mpg.de/dislin/ DISLIN] DISLIN is a high-level and easy to use graphics library for displaying data as curves, bar graphs, pie charts, 3D-color plots, surfaces, contours and maps. The software is available for several C, Fortran 77 and Fortran 90 compilers. For some operation systems, the programming languages Python and Perl are also supported by DISLIN. DISLIN is free for the Linux and FreeBSD operating systems and for the MS-DOS and Windows 95/NT compilers GCC, G77 and ELF90. Other DISLIN versions are available at low prices and can be tested free of charge.
[http://newcenturycomputers.net/projects/gdmodule.html gdmodule] GD is a graphics library for the creation of GIF pictures, written by Thomas Boutell. gdmodule is an Python extension for this library. It can do lines, arcs, fills, fonts and can also manipulate other GIF pictures. Included in the gdmodule is a graphing module, which can produce line plots from data.
[ftp://ftp-icf.llnl.gov/pub/python Gist] Extension to the gist graphics library, which is part of another
numeric environment named [ftp://ftp-icf.llnl.gov/pub/Yorick yorick]. It can produce line, contour, surface plots on quadrilateral meshes. On top of the low-level interface the people from LLNL have build an object-oriented interface which can also do isosurface and 3D slicing plots together with light and script based animation. The interface is well documented. The package is now part of the LLNL Python distribution. Gist originally ran only under Unix-like operating systems. The latest source and a Windows installer are available from the [http://bonsai.ims.u-tokyo.ac.jp/~mdehoon/software/python/ University of Tokyo].
[http://www.astro.caltech.edu/~tjp/pgplot/ pgplot] Extension to the pgplot graphics library, a portable, device independent graphics package for making simple scientific graphs. The library is intended for making graphical images of publication quality with minimum effort on the part of the user. All functions are directly callable from Python, through the use of SWIG for wrapper code generation. Pgplot has drivers for many different graphics formats and devices, although there are problems with the MS-Windows driver.
[http://people.freebsd.org/~rhh/py-opendx/index.html Py-OpenDX] OpenDX is the open-source version of the IBM Data Explorer (DX). DX is a visualization system providing a full set of tools for manipulating, rendering and animating data, especially 3D data from simulations or acquired from observations. It provides a GUI, a scripting interface and the API C libraries. Py-OpenDX is a Python binding for the OpenDX API. Currently only the DXLink library is wrapped. That wrapper allows one to start up a DX executive and communicate with it via the DXL API.
[http://public.kitware.com/VTK/ VTK] VTK is an OO-framework for visualisation, written in C++ with bindings to TCL, Python and Java. It's not really a plotting package, but a visualisation system, where one needs to program to get a picture. It's very huge and resource demanding and best used on hardware with good graphics performance. It uses mainly OpenGL for rendering, so it can not produce vector graphics or high quality postscript output. Besides of that VTK is very powerful and can produce really great views of your data.
[http://rpy.sourceforge.net/ RPy] -- a Python interface to [http://www.r-project.org the R programming language]. R is a large, robust package for doing math and statistics; it includes many, many graphing options.
[http://www.omegahat.org/RSPython/ R/SPlus Python Interface]. Another R interface. Currently it allows Python code to call
[http://www.r-project.org/ R] functions, and write R code to create Python objects and call Python functions and methods. This allows Python programmers unfamiliar with the syntax of R to easily use its functionality.
[http://pyx.sourceforge.net PyX] is a library for creating figures in Postscript and PDF, which uses TeX/LaTeX for the text output.
[http://biggles.sourceforge.net/ Biggles] is another plotting library that supports multiple output formats, as is [http://piddle.sourceforge.net/ Piddle].
[http://home.gna.org/pychart/ Pychart] is a library for creating EPS, PDF, PNG, and SVG charts. It supports line plots, bar plots, range-fill plots, and pie charts.
[http://www.pyngl.ucar.edu/ PyNGL] is a Python interface to the high quality 2D scientific visualizations in the [http://www.ncl.ucar.edu NCAR Command Language] (NCL).
Also of Note
Janko Hauser maintains a list similar to this one of [http://starship.python.net/crew/jhauser/plot-res.html "Plotting with Python"] tools, from which much of the above was stolen (with permission).
There is an interface to the OpenGL library called [http://starship.python.net/~da/PyOpenGL/ PyOpenGL] that can be used to write sophisticated visualization tools from scratch.
The [http://fxpy.sourceforge.net/ FXPy] bindings to [http://www.cfdrc.com/FOX/fox.html the FOX GUI library] support OpenGL, so might be a good starting point for new applications.