PyQwt: fast
and easy data plotting with Numerical Python
GNU General Public License with
exceptions for use with the
Educational, Non-Commercial and Commercial releases of Qt, PyQt and sip
Goodies
PyQVtk to visualize data in 3D
Did you ever want to plot data interactively using Python and Qt?
PyQwt lets you do this on Linux, Unix and Windows from:
Here is a screen shot of the BodeDemo widget.
BodeDemo demonstrates mouse controlled zooming and coordinate tracking.
PyCute demonstrates how to make a fancy plot by typing 8 lines into the Python interpreter.
Above, you see a screen shot of the PyCute shell,
produced by the last statement in the interpreter.
Below, you see a screen shot of the Plot widget,
produced by the first statements in the interpreter.
What is PyQwt?
-
PyQwt is a set of Python bindings for the Qwt C++ class
library.
Qwt extends the Qt
application framework with widgets useful for science and engineering.
-
PyQwt relies on Python, a great
programming language,
PyQt, a set of
Python bindings for the Qt's C++ classes,
sip, a Simple Interface Program
and of course Qt and
Qwt.
-
PyQwt works with Numeric and/or
numarray.
The Numerical Python Extensions Numeric and
numarray
turn Python into an ideal array manipulation language (better than MatLab).
With PyQwt you can plot lists, tuples or numerical arrays of Python
floats (= C/C++ doubles).
PyQwt is being developed on
Linux Mandrake-8.2,
Linux From Scratch-4.0
and Win4Lin with Python-2.2.2/Python-2.3, Numeric-23.0, and
PyQt-3.7&sip-3.7/PyQt-3.6&sip-3.6/PyQt-3.5&sip-3.5, Qt-2.3.0-NC/Qt-2.3.1/Qt-3.0.x/Qt-3.1.x.
You'll find also some obsolete unsupported releases of PyQwt for Qt-2.x.x and Qt-3.0.x based
on older versions of PyQt and sip in the Museum,
but I advise you to upgrade to the latest version of PyQt and sip.
There exist still a
set of older Python bindings
for PyQt/sip-0.10.1, Qwt-0.2 and Qt-1.x.
Documentation
PyQwt includes many examples and HTML documentation with
installation instructions and
a reference. The reference
lists the Python calls to PyQwt that differ from the corresponding C++ calls to Qwt.
PyQwt contains also the excellent documentation for the Qwt library.
More screen shots and source code
If you want to use PyQwt in a commercial product, you can,
provided that:
-
you buy the necessary licenses for Qt and
PyQt.
-
you accept the terms of the GNU Public License with the exceptions
specific to PyQwt.
-
you rebuild PyQwt with your commercial versions of Qt and PyQt along the lines of the
Windows build instructions or
the Unix build instructions.
Feedback on the Windows build instructions is very much appreciated.
Currently, there are no snapshots.
Maintaining PyQwt for Windows is a hobby and depends on the availability of non-commercial versions of Qt and PyQt.
Phil Thompson, the author of PyQt has published a technologically very interesting
roadmap for the future development of
the code generator that is used to build PyQt and PyQwt.
The new code generator will not work with Qt-2.3-NonCommercial (the old code generator will be maintained to make
it possible to write extensions for PyQt that are compatible with both code generators).
From my point of view, the easiest solution is that the new code generator works with Qt-NonCommercial.
However, Phil has his reasons not to do so.
If you are using PyQt/PyQwt in a commercial product on Windows, you can help me to convince Phil to make maintaining
PyQwt for Windows as easy as possible by adding you and/or your company/institution to the following list:
-
Neuralynx Inc has been providing Electrophysiology and Neuroscience
researchers with the highest quality single-unit, multi-channel Electrophysiology recording equipment since 1993.
Their products represent the "state of the art" in high density Data Acquisition & Experiment Control solutions.
Peter Lipa, PhD (Neuralynx Inc, and Kokopelly Technology LLC) is developing for Windows-2000 and later:
-
Neuralab - A python based environment for analysis of neural data
-
BubbleClust - A semi-automated Spike-Sorting Program for assocating clusters of similar waveforms to single neurons
Peter has provided debug libraries for Python-2.2.2 and MSVC-7.0 and
a PyQwt installer for the
commercial versions of PyQt-3.5 and Qt-3.10.
-
ACUSIM Software is a technology leader
committed to the development of powerful Computation Fluid Dynamics
(CFD) solver solutions. Their flagship product, AcuSolve, is a finite
element incompressible flow solver which is exceptionally robust, fast
and accurate. ACUSIM is currently engaged in development of a GUI
based pre-processor for AcuSolve on top of Python with PyQt, PyQwt and
Vtk extensions.
iqt:
the Command Line Interpreter & the Graphical User Interface
iqt enables you to create and control PyQt widgets from
the Python command line interpreter
(or IPython).
The programming style 'imposed' by PyQt (and other GUI toolkits) is
to create an application instance + some widgets and to enter into
an event loop that locks you from the command line interpreter.
iqt gives you both worlds: you can type Python
statements in the interpreter and interact with your PyQt widgets at
the same time.
iqt works by hooking a
function handling a limited number of events
on
the event hook of the readline module.
The GNU readline library closes the event loop by calling the hooked function at a maximum
rate of 10 times per second while reading your keyboard input.
This method can be applied to any GUI toolkit that permits to process
events out of the main event loop and any Python interpreter with a
decent readline module.
Oh Bill, this seems to exclude Python compiled with MSVC.
Any input welcome!
PyQVtk: data
visualuzation in 3D
This is an improved version of the QVTKRenderWindowInteractor
widget that comes with Vtk-4.0 and Vtk-4.2
It has been checked into the VTK-CVS.
Other useful Packages for Scientific and Numerical Computing
-
SciPy is a very extensive scientific algorithms library for Python: it
includes multipack, Gist and much much more. If your life depends on NumPy, you MUST have a look at
SciPy.
-
Grace is a WYSIWYG tool to make two-dimensional
plots of scientific data. It runs under various (if not all) flavors of Unix with X11 and M*tif (LessTif or
Motif). It also runs under VMS, OS/2, and Windows (95/98/NT). Its capabilities are roughly similar to
GUI-based programs like Sigmaplot or Microcal Origin plus script-based tools like Gnuplot or Genplot.
Its strength lies in the fact that it combines the convenience of a graphical user interface with the power of
a scripting language which enables it to do sophisticated calculations or perform automated tasks.
Grace is my favorite plotting program: it produces high quality output and you can typeset mathematics
without relying on TeX.
-
Scigraphica is a scientific application for data analysis
and technical graphics, based on NumPy. It pretends to be a clone of the popular commercial (and expensive)
application "Microcal Origin". It produces 2D, 3D and polar charts. Scigraphica is meant to become a
full-featured, cross-platform, user-friendly, self-growing scientific application.
I am not an expert Scigraphica user, but in my opinion, the output of Scigraphica is less good than the
output of Grace.
-
LyX is a very nice nearly WYSIWYG front-end for TeX with an equation editor.
LyX produces LaTeX, DVI, HTML, PDF or PS output: a killer app.
Use only obsolete releases, if you REALLY need: they are unsupported.
New in PyQwt-3.5
A minor release:
-
Upgrade to PyQt-3.5/sip-3.5 and Qt-3.1.0.
-
Builds by default with Qwt-2002-08-07 or optionally with Qwt-2002-10-13.
-
Qwt documentation is now also included in binary packages.
-
Latest change in version numbering scheme :-) From now on I will track the PyQt/sip versions with a possible extra
a, b, c, ... for bugfix releases.
Get PyQwt-3.5.tar.bz2 for PyQt-3.5/sip-3.5, PyQt-3.4/sip-3.4 or PyQt-3.3.2/sip-3.3.2.
New in PyQwt-sip34_20020807p1
A minor release:
-
PyCute, the Python shell for interpreter driven plotting, has now two versions: one
based on QTextEdit for Qt-3.0.x and one based on QMultiLineEdit for Qt-2.x.x.
-
tested with PyQt-3.4/sip-3.4 and some later snapshots of PyQt and sip.
-
fixes a Qwt-20020807 snapshot problem on Windows.
-
a PyQwt Windows installer for the non commercial versions of Qt and PyQt (thanks to
Phil Thompson for his support).
-
many, many changes (oops) to pass the object oriented programming facilities of the
Qwt C++ classes on to Python.
-
more examples: HistTool.py (Serge Boiko) and CPUplot.py.
CPUplot.py demonstrates the advanced features of Qwt in Python!
There is no need to get the obsolete PyQwt-sip34_20020807p1.tar.bz2.
New in PyQwt-sip34_20020807
A minor release:
-
allows interpreter driven data plotting with PyCute.py, a PyQt based Python shell
-
requires PyQt-3.4/sip-3.4 or PyQt-3.3.2/sip-3.3.2
-
interpreter driven data plotting with PyCute.py, a PyQt based Python shell
-
includes the full source three of the Qwt-20020807 snapshot
There is no need to get the obsolete PyQwt-sip34_20020807.tar.bz2.
New in PyQwt-sip332_041
A minor release:
-
requires PyQt-3.3.2/sip-3.3.2
-
simpified setup.py script, thanks to improvements in PyQt and sip.
-
Windows *.exe installer for Python-2.2.1 and Numeric-21.3.
There is no need to get the obsolete PyQwt-sip332_041.tar.bz2.
New in PyQwt-sip324_041
A major release:
-
requires PyQt-3.2.4/sip-3.2.4.
-
implements practically all public and protected member functions of Qwt-0.4.1.
-
source distribution includes full source tree of Qwt-0.4.1.
-
simplified setup.py script, thanks to improvements in PyQt and sip.
-
Windows *.exe installer for Python-2.2 and Numeric-21.0.
Get the obsolete PyQwt-sip324_041.tar.bz2
if you need PyQwt for PyQt-3.2.4/sip-3.2.4.
New in PyQwt-20011206
A major release:
-
builds with PyQt-2.5/sip-2.5 and Qt-2.x.x.
-
builds with PyQt-3.0/sip-3.0 and Qt-2.3.1.
-
builds with PyQt-3.0/sip-3.0 and Qt-3.0.0.
-
builds with distutils to a decent Python package with __init__.py.
WARNING: therefore, PyQwt will be installed to a
different directory. PLEASE, remove all files belonging
to a previous installation, before installing this version of PyQwt.
-
contains the full qwt-0.4.0 distribution
Get the obsolete PyQwt-20011206.tar.bz2
if you need PyQwt for PyQt-2.5/sip-2.5 or PyQt-3.0/sip-3.0.
New in PyQwt-0.29.94
A bug fix release:
-
fixed bug in setup.py -- examples did not install on Unix/Linux
-
documented installation of distutils on Unix/Linux -- configure/make will be deprecated.
Get the obsolete PyQwt-0.29.94.tar.bz2
if you need PyQwt for PyQt-2.4/sip-2.4.
New in PyQwt-0.29.93
A bug fix release:
-
fixed bug in QwtPlot.enableLegend(), and added documentation (here, PyQwt extends Qwt).
-
improved distutils support on Windows (does not depend on nmake anymore).
-
give the examples on Windows an extension .pyw to zap the annoying DOS box.
New in PyQwt-0.29.92
A bug fix release:
-
fixed bug in parsing third argument of QwtPlot.setCurveData(x, y, e).
-
finished DataDemo.py.
New in PyQwt-0.29.91
A major release:
-
compatible with PyQt-2.5/sip-2.5 and PyQt-2.4/sip-2.4.
-
compatible with Numeric-20.2.0, and lower.
-
*.exe installer for Windows (requires Qt-2.3.0 Non Commercial).
-
build instructions for Windows with other versions of Qt.
-
HTML/SGML documentation with installation instructions
and a reference listing the Python calls to PyQwt that are different from the corresponding
C++ calls to Qwt.
-
fixed reference counting bugs for NumPy arrays in the classes QwtAutoScale, QwtCurve, QwtPlot and QwtSpline.
-
new methods:
- QwtPlot.axisMargins()
- QwtPlot.closestCurve()
- QwtPlot.curveKeys()
- QwtPlot.markerKeys()
- QwtPlot.title()
- QwtPlot.titleFont()
- QwtScale.labelFormat()
- QwtScale.map()
-
changed methods:
- QwtCurve.verifyRange() -- cleaned up interface
- QwtAutoScale.adjust() -- is fully implemented
- QwtPlot.enableLegend() -- (de)selects all items or a single item
-
removed methods (incompatible with Python, because dangerous in C++):
- QwtCurve.setRawData()
- QwtPlot.setCurveRawData()
- QwtSpline.copyValues()
these-perisanu.pdf