Qt plotting widgets for Python
Project description
PythonQwt: Qt plotting widgets for Python
ℹ️ Created in 2014 by Pierre Raybaut and maintained by the PlotPyStack organization.
The PythonQwt
project was initiated to solve -at least temporarily- the obsolescence issue of PyQwt
(the Python-Qwt C++ bindings library) which is no longer maintained. The idea was to translate the original Qwt C++ code to Python and then to optimize some parts of the code by writing new modules based on NumPy and other libraries.
The PythonQwt
package consists of a single Python package named qwt
and of a few other files (examples, doc, ...).
See documentation online or PDF for more details on the library and changelog for recent history of changes.
Sample
import qwt
import numpy as np
app = qwt.qt.QtGui.QApplication([])
# Create plot widget
plot = qwt.QwtPlot("Trigonometric functions")
plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend)
# Create two curves and attach them to plot
x = np.linspace(-10, 10, 500)
qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True)
qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True)
# Resize and show plot
plot.resize(600, 300)
plot.show()
app.exec_()
Examples (tests)
The GUI-based test launcher may be executed from Python:
from qwt import tests
tests.run()
or from the command line:
PythonQwt
Tests may also be executed in unattended mode:
PythonQwt-tests --mode unattended
Overview
The qwt
package is a pure Python implementation of Qwt
C++ library with the following limitations.
The following Qwt
classes won't be reimplemented in qwt
because more powerful features already exist in guiqwt
: QwtPlotZoomer
, QwtCounter
, QwtEventPattern
, QwtPicker
, QwtPlotPicker
.
Only the following plot items are currently implemented in qwt
(the only plot items needed by guiqwt
): QwtPlotItem
(base class), QwtPlotItem
, QwtPlotMarker
, QwtPlotSeriesItem
and QwtPlotCurve
.
See "Overview" section in documentation for more details on API limitations when comparing to Qwt.
Roadmap
The qwt
package short-term roadmap is the following:
- Drop support for PyQt4 and PySide2
- Drop support for Python <= 3.8
- Replace
setup.py
bypyproject.toml
, usingsetuptools
(e.g. seeguidata
) - Add more unit tests: the ultimate goal is to reach 90% code coverage
Dependencies and installation
Supported Qt versions and bindings
The whole PlotPyStack set of libraries relies on the Qt GUI toolkit, thanks to QtPy, an abstraction layer which allows to use the same API to interact with different Python-to-Qt bindings (PyQt5, PyQt6, PySide2, PySide6).
Compatibility table:
PythonQwt version | PyQt5 | PyQt6 | PySide2 | PySide6 |
---|---|---|---|---|
0.16 and earlier | ✅ | ⚠️ | ❌ | ⚠️ |
Latest | ✅ | ✅ | ❌ | ✅ |
Requirements
- Python >=3.9
- QtPy >= 1.3 (and a Python-to-Qt binding library, see above)
- NumPy >= 1.5
Optional dependencies
- coverage, pytest (for unit tests)
- sphinx (for documentation generation)
Installation
From the source package:
python -m build
Copyrights
Main code base
- Copyright © 2002 Uwe Rathmann, for the original Qwt C++ code
- Copyright © 2015 Pierre Raybaut, for the Qwt C++ to Python translation and optimization
- Copyright © 2015 Pierre Raybaut, for the PythonQwt specific and exclusive Python material
Some examples
- Copyright © 2003-2009 Gerard Vermeulen, for the original PyQwt code
- Copyright © 2015 Pierre Raybaut, for the PyQt5/PySide port and further developments (e.g. ported to PythonQwt API)
License
The qwt
Python package was partly (>95%) translated from Qwt C++ library: the associated code is distributed under the terms of the LGPL license. The rest of the code was either wrote from scratch or strongly inspired from MIT licensed third-party software.
See included LICENSE file for more details about licensing terms.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pythonqwt-0.14.1.tar.gz
.
File metadata
- Download URL: pythonqwt-0.14.1.tar.gz
- Upload date:
- Size: 1.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c7f631feb58aa67a36dc75ed483e86807d9f2232cc72da60349daa460862a33 |
|
MD5 | ed0b375530d98119b4016effa9ed8f84 |
|
BLAKE2b-256 | 4fd3f8eabf2526d785fbc21a18accce8b05ad4be59d4cf5e8bcce894237bd6de |
Provenance
File details
Details for the file PythonQwt-0.14.1-py3-none-any.whl
.
File metadata
- Download URL: PythonQwt-0.14.1-py3-none-any.whl
- Upload date:
- Size: 1.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c47f4d38eae54b6e959604a5079d5410d420c387ad8eb0daab1404a08a5611be |
|
MD5 | b9d8a92c0e862e7bb803a6c1a26cc908 |
|
BLAKE2b-256 | df9008b106b2574e58835e13af18288b193c6138977e96a48df8dbb4ae4025ee |