Graphite Vision Statement


We propose a Python graphing package called Graphite. Graphite will enable the easy creation of 2D and 3D scientific, engineering, and business graphs. Some graph types to be included are line graphs, bar charts, function plots, polar plots, parametric plots, and mesh plots. Graphite will be able to produce output for formats such as PostScript, PDF, GIF, QuickDraw, Tk, and Windows.


Python is a high-level, object-oriented language developed originally at CWI in Amsterdam, and now at CNRI in Reston, VA. It is a young language, developed initially in 1990, but its use has been increasing, probably due to a number of attractive features such as:

These features allow one to develop programs in Python with a fraction of the code needed in lower-level languages such as C/C++; and the code is generally considered easier to learn and read than alternatives such as Perl.

Traffic on the Python mailing list has been increasing at an accelerating rate since 1991, with no signs of levelling off. A number of organizations use Python, including NASA, IBM, SGI, LANL, and LLNL. Of course it is difficult to extrapolate to actual numbers, but it is clear that the Python developer community is growing.

A significant subset of these users are scientists and engineers, who make use of Python's numeric processing capabilities. Python has built-in support for a variety of numeric types, including integer, real, and complex numbers of various sizes. There is also a contributed module called Numeric, developed originally at MIT and now supported by LLNL, which adds an efficient datatype for multidimensional matrices, and associated functions and operations for manipulating such data. Additional modules provide extra support for applications such as Fourier transforms and linear algebra. Together, these packages offer a powerful alternative to such commercial packages as Matlab. Python has won many converts in this arena because of its more sophisticated language, its large collection of pre-built modules, and its open-source nature.

However, Python's utility as a number-crunching environment comes with one serious drawback: there is no good, portable graphing module. The user community is fractionated by a large number of incompatible graphing utilities, none of them well-integrated with Python, none available on all platforms, and most lacking in functionality. This is a severe limitation when compared to a package such as Matlab, which has powerful graphing capabilities and is portable to all platforms.

Product Requirements

A new Python package is needed to fill this gap in functionality. This package should have the following attributes:

Potential Users

We see several major groups of users: We will be able to reach many of these users via the comp.lang.python newsgroup. In addition, some potential users have already been identified in past discussions about the need for such a package.


The project might fail for a variety of reasons.


We are proposing a Python module for generating high-quality plots, tentatively named "Graphite". If the set of requirements is achieved, Graphite will fill an important gap in current Python functionality. We've identified potential users in the scientific, engineering, and education fields, as well as web designers and possibly others. The biggest risk to the project is that some other package will be collectively judged by the Python community to be more useful. While all of the current packages we have surveyed appear to be lacking, we may have missed one, or a new one may be developed in time to compete with Graphite.
Last Updated: 4/06/99 . . . . . .