Book Review: Matplotlib for Python Developers
Matplotlib for Python Developers by Sandro Tosi is the latest in a series of concise project-specific manuals from Packt. It covers the matplotlib library for creating charts and graphs.
Quick Review
My review for the impatient reader:
Why I picked it up: I thought it might help with a project at work.
Why I finished it: I wanted to see what features
matplotlib
had the could be useful, and how to integrate it with web
frameworks.
I’d give it to: Anyone wishing to create custom charts and graphs, especially pragmatically.
Review
The book starts a little slowly, presenting lots of background
material and feature lists in chapter 1 without any real examples to
make them concrete. Chapter 1 also covers the installation process.
It’s a shame binary installers are required, and it isn’t clear
matplotlib
and its dependencies work with tools like virtualenv. I
wish more publishers would move the installation instructions in these
sorts of books out of the first chapter and into an appendix, and let
the main content of the book focus on the primary subject matter.
The examples in chapters 2-4 start simple and build in complexity, adding feature after feature. The progression is logical and it is easy to skim over the repetitious parts of subsequent examples. Having each chart style and annotation feature described will make the book a good reference guide for someone using the library.
There were two minor issues with the presentation of the examples,
though. First, the author’s use of the non-standard IPython UI was a
little distracting, but it was explained in a later chapter that there
are some special interactive features of matplotlib
which are best
used together with IPython. Second, the examples frequently use
“import as” to create abbreviated forms of module names. While it made
the code samples smaller, and may be how experienced matplotlib
users work, as a new user I found that it made the examples harder
to follow because I could not always tell where the functions were
coming from.
The second half of the book includes three separate chapters covering
integration of matplotlib
with different GUI toolkits, which felt a
little excessive. Since the same example application is presented, it
would have been less repetitious to see the chapters combined with
only the difference highlighted. The same comment applies to the three
sections on using matplotlib
on the web. Using just one of the three
tools (CGI, Django, or Pylons) would have been sufficient, and left
space for more advanced examples or a deeper explanation.
Conclusions
My overall impression of the book is that it could make a useful
reference guide for matplotlib
, but it didn’t have a lot of advice
for visualization issues in general. There are other more general
books on visualization techniques (including one from Packt), so the
narrow focus isn’t necessarily a problem if you are willing to look
further.
Disclaimer: I received a free review copy of this book from the publisher as part of my participation in the PyATL Book Club.