Matplotlib is more or less the de-facto standard plotting
library for python. If you are starting a new project and do not
need any of the features specifically provided by pyqtgraph, you
should start with matplotlib. It is much more mature, has an
enormous user community, and produces very nice publication-quality
graphics.
Reasons you might want to use pyqtgraph instead:
-
Speed. If you are doing anything requiring rapid plot updates,
video, or realtime interactivity, matplotlib is not the best
choice. This is (in my opinion) matplotlib's greatest weakness.
-
Portability / ease of installation. PyQtGraph is a pure-python
package, which means that it runs on virtually every platform
supported by numpy and PyQt, no compiling required. If you
require portability in your application, this can make your life
a lot easier.
-
Many other features--pyqtgraph is much more than a plotting
library; it strives to cover many aspects of science/engineering
application development with more advanced features like its
ImageView and ScatterPlotWidget analysis tools, ROI-based data
slicing, parameter trees, flowcharts, multiprocessing, and more.
VisPy is a new 2D/3D visualization library based on OpenGL
that is developed as a collaboration between the authors of
PyQtGraph, VisVis, Galry, and Glumpy. It is presently in early
development and has a narrower scope than PyQtGraph--it will focus
on visualization without the GUI toolkit features provided by
PyQtGraph. In the long term, we hope VisPy will be able to replace
Qt as the rendering engine for 2D graphics, and replace the
pyqtgraph.opengl 3D system entirely.
More about VisPy here.
PyQwt has a very nice set of features and is fast enough for
realtime work. Its main drawback is that it is currently
unmaintained and can be difficult to get working on a variety of
platforms. Hopefully in the future it may find a new maintainer, but
until then it may be best to avoid PyQwt (the original PyQwt
maintainer is currently recommending to use pyqtgraph instead; check
their mailing lists for updates). Like matplotlib, PyQwt lacks some
of the more advanced features of pyqtgraph.
Chaco is a very interesting project--nice graphics, good
speed, and actively developed. Like PyQwt, however, Chaco can be
challenging to install on a wide variety of platforms and lacks some
of pyqtgraph's more advanced features (although pyqtgraph certainly
lacks many of Chaco's features as well).
GuiQwt is an interesting project with many advanced features
similar to pyqtgraph. It is presently based on PyQwt and thus comes
with some of its drawbacks, although there appear to be plans to
change this in the future.