Matplotlib: DANSE kickoff John D. Hunter, Ph.D.

23 downloads 346 Views 3MB Size Report
matplotlib 0.84. 80 python modules. 21 files of extension code. 110,000 lines of code. 189 examples. • 2-5 active developers at any time; 25 contributors.
Matplotlib: DANSE kickoff John D. Hunter, Ph.D.

http://matplotlib.sourceforge.net

Copy the great architectures E Tufte

# matplotlib 0.1 ~/python/matplot_gtk12> ls READ M E matplotlib.py subplot_demo.py data simple_plot.py view_data.py matplot.py stock_demo.py vline_demo.py

# matplotlib 0.84 80 python modules 21 files of extension code

• 2-5 active developers at any time; 25 contributors • ~5000 downloads/month

110,000 lines of code

• ~500 mailing list subscribers

189 examples

• 18 backends

pylab interface

• Plotting should just work • Easy plots should be easy • GUI / interactive complexity should be managed • ipython to the rescue

• Stateful • Procedural • Do-nothing

IPython 0.6.12_cvs -- An enhanced Interactive Python. ? -> Introduction to IPython's features. % m agic -> Information about IPython's'magic'% functions. help -> Python's own help system. object? -> Details about'object'.?object also works, ?? prints more. Welcome to pylab, a matplotlib-based Python environment help(matplotlib) -> generic matplotlibinformation help(pylab) -> matlab-compatible com mands from matplotlib help(plotting) -> plotting commands In [1]: plot([1,2,3])

bar demo

stacked bar

pie demo

scatter demo

histogram demo

log demo

polar demo

layer image

subplot demo

axes demo

legend demo

text alignment

mathtext demo2

basemap toolkit

cylindrical equidistant, mercator, lambert conformal conic, lambert azimuthal equal area, albers equal area conic and stereographic.

finance demo

EEG demo

VTK demo

Native mpl 3D examples/simple3d_oo.py

The matplotlib API from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas from matplotlib.figure import Figure fig = Figure() canvas = FigureCanvas(fig) ax = fig.add_subplot(111) ax.plot([1,2,3]) a ax.set_title('hi mom') ax.grid(True) ax.set_xlabel('time') ax.set_ylabel('volts') fig.savefig('test')

backends

The numerix module

# choose numeric or numarray from the shell C:> python myscript.py --numarray # or in an rc file setting numerix : ‘numpy’

The GUI problem: the curse of python, part III • GUI independent rendering • GUI neutral event handling

• Cross platform font finding: win32, linux, OS X • Configurable families: the font engine will pick the best font to match your requirements

font manager

• W3C compliant

font.family : sans-serif font.style : normal font.variant : normal font.weight : medium font.stretch : normal font.size : medium font.serif : New Century Schoolbook, Century Schoolbook L, Utopia,ITC Bookman, Bookman, Bitstream Vera Serif, Nimbus Roman No9 L, Times New Ro man, Times, Palatino, Charter, serif font.sans-serif : Lucida Grande, Verdana, Geneva, Lucida,

tex = r'$\cal{R}\prod_{i=\alpha_{i+1}}^\infty a_I … \rm{sin}(2 \pi f x_i)$' text(1, 1.6, tex, fontsize=30)

mathtext demo

MATPLOTLIB CREDITS (in order of appearance…) • • • • • • • • • •

Jeremy O'Donoghue wrote the wx backend Andrew Straw provided much of the log scaling architecture, the fill command, PIL support for imshow, and provided many examples Charles Twardy provided the impetus code for the legend class and has made countless bug reports and suggestions for improvement. Gary Ruben made many enhancements to errorbar to support x and y errorbar plots, and added a number of new marker types to plot. John Gill wrote the table class and examples David Moore wrote the paint backend Todd Miller contributed the TkAgg backend and the numerix module, which allows matplotlib to work with either numeric or numarray. He also ported image support to the postscript backend, with much pain and suffering. Paul Barrett overhauled font management to provide an improved, free-standing, platform independent font manager with a WC3 compliant font finder and cache mechanism and ported truetype and mathtext to PS Perry Greenfield overhauled and modernized the goals and priorities page, implemented an improved colormap framework, and has provided many suggestions and a lot of insight to the overall design and organization of matplotlib. Jared Wahlstrand wrote the SVG backend

MATPLOTLIB CREDITS (continued) • • • • • • • • • • • •

Steve Chaplin is the GTK maintainer and wrote the Cairo and GTKCairo backends Jim Benson provided the patch to handle vertical mathttext Gregory Lielens provided the FltkAgg backend and several patches for the frontend, including contributions to toolbar2, and support for log ticking with alternate bases and major and minor log ticking Darren Dale did the work to do mathtext exponential labeling for log plots. Paul Mcguire provided the pyparsing module on which mathtext relies, and made a number of optimizations to the matplotlib mathtext grammar. Fernando Perez has provided numerous bug reports and patches for cleaning up backend imports and expanding pylab functionality, and provided matplotlib support in the pylab mode for ipython. He also provided the matshow command. Andrew Dalke of Dalke Scientific Software contributed the strftime formatting code to handle years earlier than 1900 Jochen Voss maintained the PS backend and has contributed several bugfixes. Nadia Dencheva of STScI provided the contouring and contour labeling code Baptiste Carvello provided the key ideas in a patch for proper shared axes support that underlies ganged plots and multiscale plots Sigve Tjoraand Ted Drain and colleagues at the JPL collaborated on the QtAgg backend Eric Firing added the contourf function and general contour refactoring