I'm not happy with any of the plotting packages in python. I've used matplotlib extensively till now and I've written a few standalone python applications (gtk) using matplotlib which require displaying images/graphs and letting the user interact with the displayed data.
Here are the things I dislike about it:
1. Python just doesn't play well with gui toolkits. Once the main loop is called, you lose control of the command line interpreter. There are restrictions on calling the main event loop in a separate thread. (I don't understand why that's not possible). Ipython and mpl both try to work around this in various ways. None of them seems to be entire satisfactory. Ipython, for me, slows down in some cases after plotting a few figures and has to be restarted. I haven't looked in why this happens.
2. When I first started using matplotlib, I had come from matlab land. And I missed two things the most. The first was that you couldn't interactively edit things like the labels, title, ticks etc. And the second was that there doesn't exist a way to save the figure objects (like fig files in matlab).
Over time, these two things have became less important as I adapted my workflow to mpl. But still, having them would be nice.
3. The pylab and pyplot interface makes things confusing. There should be one and only one way of doing things. I can understand that they're trying to avoid boilerplate code but to go beyond the basics necessitates learning about classes like Figure and Axis. Very easy to do standard things. Very difficult to go beyond that.
4. The .rcmatplotlb file makes life difficult by introducing additional parameters. So that now the same code will generate different plots depeding on the .rc file.
Instead of having to explicitly call matplotlib.rcdefaults(), one should have to make a function call for the .rcmatplotlib file to be read.
5. Though the devs have tried to abstract away the gui toolkit details, I inevitably end up using pygtk and embedding matplotlib in it. I then embed the navigation toolbar and create other stuff like buttons. I often end up having to delve deep inside the library.
6. Matplotlib should stick to a being a plotting library. By including several matlab like functions inside the pylab interface is simply bloat.
---
That said, it is still a good library and the de-facto standard for plotting in python. And with ipython notebook, it works rather well. I did some data analysis and plotting in ipython notebooks yesterday and I quite liked it. Although I wish it were possible to embed data inside the notebooks instead of having to read it from a file.
I found plotting libraries too: bokeh, plotly, chaco.
Plotly is aimed at accountants and other people who mainly crunch spreadsheets (pandas targets the same people as well). It cannot handle matplotlib contour plots.
Chaco seems interesting. Not least because it has a defined object model using traits. I'll look into it later
Bokeh promises interactivity. But it has defined interactivity too narrowly. Zooming and panning are just the tip of the iceberg. What about things like taking a line slice of 2d data?
---
Also tried pip and conda. Pip is good. Maybe it should give the user a message about the requirements - compilers, libraries, etc - that I should have before it installs.
Conda distributes binaries. I have no idea how it deals with libraries that have no ABI compatibility. And the repositories it uses are of Continuum. Is there any way somebody can get their package into their repositories?
--