next up previous
Next: Graphite Goals and Status Up: Graphite A portable graphing Previous: Graphite A portable graphing

Introduction

A significant subset of Python 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.

A graphing package should satisfy the following goals:

Graphite attempts to meet all of the above goals. Print-quality graphing is made possible by the fact that Graphite can generate Postscript or PDF output. These output formats are a result of using PIDDLE [3] which also gives Graphite Platform independence . The PIDDLE interface specifies a set of interactive functions which could at some point be used for interactive graph manipulation. Every property of the Graph object can be changed by the user to providing Flexibility . In order to make Graphite Easy-to-use there is a small set of utility functions which automate such things as reading data from a delimited file, selecting columns from that data, and generating output to a PIDDLE canvas. Also, reasonable defaults allow for quick graphing of data without setting any of the Graph properties. For Good language integration Graphite uses Python as its base language. Graphite is Open source and freely available at http://www.strout.net/python/graphite. Graph reusability is only somewhat possible at this point, but more support for this is planned for future releases.

First we discuss more concrete Graphite goals (such as plot format types) and their status. Next, we step through the creation of an example graph, show how a user might change various options. Then we describe the software architecture of Graphite, and various design issues. Finally, we cover related and future work.


next up previous
Next: Graphite Goals and Status Up: Graphite A portable graphing Previous: Graphite A portable graphing
Michelle Mills Strout
11/15/1999