A friend of mine from MIT who is just finishing his PhD was over for  
dinner tonight. We discussed the learning curve of matplotlib and  
compared it with other plotting systems that we've both used,  
including gnuplot & PyX.

My friend said that he thought that the learning curve was really  
high, but that he had been motivated to do something with it, so he  
had persevered. He wasn't entirely happy with what he got, but it was  
okay. He co-author on a paper, though, couldn't figure it out and  
thought that it wasn't worth the effort.

Interestingly enough, Crossroads, the ACM student publication, had a  
really interested article on this in the Summer 2006 issue. The  
article, by Christopher Scaffidi, is titled "Why Are APIs Difficult  
to Learn and Use?" I would recommend it to anyone who is developing  
an API or a package. You can read it at http://www.acm.org/crossroads/ 
xrds12-4/difficultapis.html. The gist of the article is that  
documentation is extremely important, after which "hello world"  
programs can be helpful. However, it's really important to have an  
API that is orthogonal and has the right abstractions.

One of the things that I would have added to the article is the  
importance of having decent defaults.

I'm very interested in putting together a document that would be  
incorporated into the user's manual that would describe the  
abstractions used by matplotlib. I think that this would help me to  
understand it better, and would also be useful to the community. Does  
anything like this currently exist?

To answer Eric's most recent posting:

1. I think that scientific notation should not be the default, unless  
numbers exceed 1E+7.
2. It would be nice if there was an easy way to get commas into  
numbers. (This is forever a problem; I wish that the original C folks  
had thought to put commas into their original printf formatting. I  
have a nice python commas function if you want it, although you can  
probably create one that is more efficient.)

3. If I was going to make a major change to the API at this point, it  
would be to make it so that you don't have a class/function/ 
identifier called "axes" and another one called "axis." I frequently  
get confused between these two words; I imagine that non-native  
English speakers get confused even more frequently. Irregular noun  
plurals in English are confusing, and it probably isn't necessary to  
use both.  One approach would be to never allow "axis," to only allow  
"xaxis" and "yaxis" and perhaps something (either_axis?) for the  
abstract super-class, but this may be a bigger change than you wish  
to consider at the present time.

> It may make sense to have a simpler interface to this--especially  
> simply turning scientific notation on or off on one or both axes-- 
> at the Axes class level and the pylab level, but I thought I would  
> take it a step at a time.  I am open to suggestions as to method/ 
> function name and signature.  The matplotlibrc interface could even  
> be used if people really want to be able to make no-scientific- 
> notation their default, but I am wary of dumping more and more  
> knobs into matplotlibrc.

Ah, the matplotlibrc file.   It seems that you are trying to do too  
much with this file.  Is the point of the file to have default  
graphing behavior, or to have site-wide configuration information?   
You may wish to split the file into two parts --- a config part and a  
graphing preferences part --- because it seems that sometimes people  
wish to change one without changing the other. Or you may want to  
have explicit inheritance --- like an "-include" feature so that a  
local file can just shadow some variables and then include the master  
file. I understand that this can be done with a few lines of python  
at the top of a program. Of course, given that option, you may wish  
to do away with the local files entirely. I'm not sure.

Have the matplotlib developers put together a roadmap of their  
directions that they want to take this project?

-Simson


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to