FAQs = ( ('BUGREPORT', 'How do I report a problem?', """\ OK, this is not a FAQ, but I wish it were .

If you are having a problem compiling matplotlib, provide your operating system and matplotlib version, any changes you may have made to setup.py or setupext.py, and the output of

  > rm -rf build
  > python setup.py build
If matplotlib compiled fine, but no scripts run, see failure.

If the matplotlib example scripts are running fine, and you have a script that doesn't work that you think may be a bug, please provide as much information as possible in your bug report, in particular which matplotlib version and backend you are using, operating system, and any nonstandard rc options. Some of this information is provided simply by running your script with python myscript.py --verbose-helpful and posting the output along with your problem description. Ideally, you should provide a standalone script that runs on our system and exposes the bug -- if you do this there is a very good chance the problem will be fixed. If we can't replicate the bug, it is much harder to fix. Sometimes you cannot do this because the code or data is proprietary -- in this case it is often helpful to post an image along with your description that shows the problem.

You can post problems either to the matplotlib-users mailing list, or the sourceforge bugs page. I prefer the mailing list, because it gets read by more people, and if it is a real and pesky bug I'll ask you to post it to the sourceforge site. But some people don't want the extra email traffic of the mailing list, which is understandable, so it is fine to just post to the sourceforge site.

"""), ('FAILURE', "matplotlib compiled fine, but I can't get anything to plot" , """\ The first thing to try is to remove site-packages/matplotlib and reinstall. If you are running the windows installer or using some other package, that is all you need to do. If you are compiling matplotlib yourself, you also need to remove the build subdirectory of the matplotlib src tree you are compiling from. It is not enough to do python setup.py clean. Try rebuilding and reinstalling matplotlib after removing these two directories and see if that helps. If not, read on.

The best way to test your install is by running a script, not working interactively from a python shell or an integrated development environment such as IDLE. Each of those brings additional complexities, as described at interactive matplotlib and this faq. So open up a UNIX shell (or a DOS command prompt) and cd into a directory containing a minimal example in a file. Something like simple_plot.py or just this

from pylab import *
plot([1,2,3])
show()
and run it with (the verbose flag below is for matplotlib-0.64 or later)
  > python simple_plot.py --verbose-helpful
This will give you additional information about which backends matplotlib is loading, version information, and more. At this point you might want to make sure you understand matplotlib's configuration process, governed by the configuration file matplotlibrc which contains instructions within and the concept of the matplotlib backend.

If you are still having trouble, please post a question and the output of --verbose-helpful to the mailing list. """), ('PYGTK24', "I can't compile matplotlib with pygtk 2.4." , """\ This is a pygtk bug. The patch is in pygtk CVS. You basically need to add the G_BEGIN_DECLS/G_END_DECLS macros, and rename typename parameter to typename_

-			  const char *typename,
+			  const char *typename_,
"""), ('CLICKMAPS', "Can I use matplotlib to make clickable images?" , """ Yes. Andrew Dalke of Dalke Scientific has written a nice article on how to make html click maps with matplotlib agg PNGs. We would also like to add this functionality to SVG and add a SWF backend to support these kind of images. If you are interested in contributing to these efforts that would be great. If you need them but aren't up to making the contribution yourself, please contact us on the mailing list and fill out a support request. """), ('ZORDER', "How can I control the order that my plot elements appear" , """\ Within an axes, the order that the various lines, markers, text, collections, etc appear is determined by the zorder property (matplotlib-0.65 or later). The default order is patches, lines, text, with collections of lines and collections of patches appearing at the same level as regular lines and patches, respectively. See zorder_demo.py. """), ('TOOLBAR2', 'Nothing happens when I click the new toolbar buttons', """\ The Home, Forward and back buttons on the new toolbar are used to navigate between previously defined views. If you haven't navigated anywhere, these buttons will have no effect. The Pan/Zoom, and zoom to rect buttons activate a navigation mode, but by themselves do nothing. After clicking one of them, you need to put your mouse over and axes and click/drag. Then the navigation tools take effect - see the toolbar2 tutorial. """), ('LOG', "I'm getting a log of zero error even though I know all of my data are positive", """\ This was a problem that occurs in versions of matplotlib < 0.72. The log zero error is occurring when the transformation is made on the axes limits and not on the data. The autoscaler picks the best min/max for the data coordinates, and will round down or up to facilitate nice integer ticking. When you plot with linear coords, the autoscaler makes its pick according to linear scaling, and if when you change scales the old scaling is in effect and the log transform fails when converting the viewport.

Solution: The best solution is to upgrade your matplotlib to >= 0.72. If this is not a good option, rescale the axes after changing coords, either manually

  ax.set_yscale("log")
  ax.set_xscale("log")
  axis([minx, maxx, miny, maxy])
or use the autoscaler
  ax.set_yscale("log")
  ax.set_xscale("log")
  ax.autoscale_view()
or set your log coords *before* calling a plot command
  ax = gca()
  ax.set_yscale("log")
  ax.set_xscale("log")
  errorbar(x,y,err,fmt='o')
and then the errorbar command will pick a "locator" to handle ticking and viewport scaling appropriately from the outset. This is the approach taken in log_bar.py. """), ('EQUAL', 'How do I make my figure square / axes sides equal?', """\ There are three considerations: the width/height of the figure, of the axes, and the view limits
figure(figsize=(8,8))       # figure sides equal
axes([0.1, 0.1, 0.8, 0.8])  # axes width, height equal
plot(something)
axis([-5, 5, -5, 5])        # view limits equal
Note that your display device may not have the same dpi, in which case your image will still not look square on your display. I should probably add dpix and dpiy to correct for this. ZBut your postscript and other hardcopy will be correct.

If you really want square on a display with different horizontal and vertical resolutions, you can do a little hack on the figure width and height to correct for the display differences. """), ('FREEZE', 'My matplotlib window is freezing', """ Often times this is caused by running matplotlib with a backend that is not compatible with your shell or IDE.

There are known incompatiblities with some of the backends with some of the IDEs, because they use different GUI event handlers. If you want to use matplotlib from an IDE, please consult the backends documentation for compatibility information. You will have the greatest likelihood of success if you run the examples from the command shell or by double clicking on them, rather than from an IDE.

If you are trying to generate plots interactively from the shell, you need a shell that is compatible with your backend. Currently, your best bet is TkAgg from the standard python shell or ipython. There are a couple of custom GTK shells you can use, described here.

To find out which IDEs are compatible with your backend, see backend.

To test whether you are experiencing a problem inherent in matplotlib, you should open up a command shell and try to run one of the examples from the matplotlib src distribution (the *.zip file for windows users); Eg,

  c:\matplotlib\examples> python simple_plot.py
If this works fine, then you likely have an IDE/shell problem and not a matplotlib specific problem. Unfortunately, this problem tends to crop up a lot. See for example this thread and the responses to that post for more information. """), ('MOVIE', 'How do I make a movie with matplotlib?', """If you want to take an animated plot and turn it into a movie, the best approach is to save a series of image files (eg PNG) and use an external tool to convert them to a movie. There is a matplotlib tutorial on this subject here. You can use mencoder, which is part of the mplayer suite for this
#fps (frames per second) controls the play speed
mencoder 'mf://*.png' -mf type=png:fps=10 -ovc \\
   lavc -lavcopts vcodec=wmv2 -oac copy -o animation.avi
The swiss army knife of image tools, ImageMagick's convert, works for this as well.

Here is a simple example script that saves some PNGs, makes them into a movie, and then cleans up.

import os, sys
from pylab import *

files = []
figure(figsize=(5,5))
ax = subplot(111)
for i in range(50):  # 50 frames
    cla()
    imshow(rand(5,5), interpolation='nearest')
    fname = '_tmp%03d.png'%i
    print 'Saving frame', fname
    savefig(fname)
    files.append(fname)

print 'Making movie animation.mpg - this make take a while'
os.system("mencoder 'mf://_tmp*.png' -mf type=png:fps=10 \\
  -ovc lavc -lavcopts vcodec=wmv2 -oac copy -o animation.mpg")

# cleanup
for fname in files: os.remove(fname)

"""), ('FONTMISSING', "When I start matplotlib, I am getting warnings about not being able to find fonts?", """ matplotlib uses a cache file to store information about your system fonts, and occasionally we reorganize our directory schemes or your system may have changed. When you get warnings about missing fonts, try removing your font cache directory "fontManager.cache" which is located in your ".matplotlib" configuration directory. Where this is depends on your operating system but see the prolog of matplotlibrc for information on where this is stored. You can also run a test pylab script with --verbose-helpful or --verbose-debug, eg
> python test.py --verbose-helpful
to get additionaly diagnostic information about which matplotlibrc file is loaded, which font cache directory is used, which fonts are being used, etc... """), ('WRONGDIR', "When I try to import pylab, I get an error about no _transform.so or ft2font.so", """ If you are trying to run matplotlib from the matplotlib build dir, you will fail. This is because the matplotlib python src dir is in your module path, but it does not include the compiled extension modules which are in site-packages/matplotlib. Change into another directory and try again.

If the problem persists, see if the required object files are in site-packages/matplotlib. If not, something is wrong with your install. You may want to try rebuilding with

   > rm -rf build
   > python setup.py build > build.out
and post the results to the matplotlib-devel or matplotlib-users mailing lists. """), ('EXAMPLES', 'Where can I find information about what matplotlib can do?', """\ There are a lot of features under the hood in matplotlib. This tutorial is a good place to start. When you are finished with it, the next step (other than getting to work on your own figures, of course) is to download the source distribution and take a look at the examples subdirectory. If you are working with date plots you'll find several date demos with obvious filenames like date_demo1.py. Likewise, you'll find examples for images (image_demo.py), contouring (contour_demo.py, using matplotlib with a graphical user interface (examples/user_interfaces/embedding_in_wx.py and many more. At last count, there were 116 examples. Because these are not included with the standard windows installer, they are often overlooked, which is why I emphasize them here.

The next place to turn to find the hidden gems is the what's new page. Every feature ever introduced into matplotlib is listed on that page with the version it was introduced, usually with links to examples and functions. Scrolling through that page is one of the best ways to find out what capabilities and customizations are supported.

"""), ('LARGEPS', "My PS/EPS files are huge; what's wrong?", """ As of matplotlib-0.91.0, only the glyphs that are needed for the plot are saved in the Postscript file. This significantly reduces file sizes. To revert to the old behavior, where entire font files are saved in the Postscript file, you can set the parameter 'ps.fonttype' to 42. Starting with matplotlib-0.87, it is also possible to reduce Postscript file sizes by using the standard Postscript fonts, rather than embedding Truetype files. Just set the parameter 'ps.useafm' to True. """), ('PROMPT', "After my matplotlib script runs, I get a python shell prompt. What's going on?", """ Tkinter, used by the default windows backend TkAgg does not have a mainloop like GTK or WX. We needed a way to keep the figure open, and decided the best way was to switch into interactive mode in python. This has the additional benefit that you can issue additional python commands to customize your figure interactively, if you want. """), ('USE', "matplotlib seems to be ignoring the use command", """ You must use the use command before importing pylab, as described on backends

  >>> import matplotlib
  >>> matplotlib.use('Agg')
  >>> from pylab import *
Note that if you are using an IDE like pycrust, pythonwin, or IDLE, pylab may have already been loaded, and subsequent calls to use or from pylab import * will have no effect unless you explicitly force a module reload. """), ('VERSIONS', 'What do the version numbers mean?', """ The system has been evolving a bit, but here is what I am currently using """), ('SLOW', 'matplotlib seems painfully slow, am I doing something wrong?', """\ Hopefully, yes. A lot of work has gone into making matplotlib reasonably fast plotting largish arrays and image data. If things seem exceptionally pokey, it may indicate a problem in your setup. Also, if you are running a python script, make sure your interactive setting in your matplotlibrc is False; otherwise the figure will be redrawn with every plotting command when what you want is for the figure to be drawn only once at the end of the script. See interactive and what's up with show? for more information.

Another possibility to speed things up is to use collections, which were designed to efficiently plot large numbers of objects with some shared properties. If you find youself issuing many spearate plot commands, or instantiating many Line2D or Patch objects, you may benefit from recoding with collections. See the matplotlib.axes.Axes implementatation of scatter and pcolor, and the matplotlib.finance module, for examples.

If you are experiencing problems with performance, please post an example to the mailing list. It would be helpful to provide as much information as possible, such as what OS you are on, what backend you are using, the size of the data arrays you are plotting, and the output of python yourscript.py --verbose-helpful. """), ('MATPLOTLIBRC', 'How do I customize the default behavior of matplotib?', """ Recent versions of matplotlib (0.51 or later) use a configuration file to set everything from the default font, to the figure size, to the default line width. See matplotlibrc for a sample config file and information on how to use it. """), ('OO', 'Is there any guide to using matplotlib with pythonic / OO /API rather than the pylab interface?', """ There is no official documentation yet, but there are a few resources

I'm working on some additional documentation but it is not ready yet. """), ('PY2EXE', 'Can I freeze matplotlib with py2exe', """\ Yes. I have successfully frozen example scripts using the TkAgg, GTKAgg and WxAgg backends. One trick is to make sure that py2exe can find all the matplotlib data files. Recent versions of matplotlib (0.54.3 and later) support py2exe by looking in the py2exe dist dir for a matplotlibdata subdir. Thus if your setup.py script looks like
from distutils.core import setup
import glob
import py2exe

data = glob.glob(r'C:\Python23\share\matplotlib\*')
data.append(r'C:\Python23\share\matplotlib\matplotlibrc')

setup( console    = ["simple_plot.py"],
       data_files = [("matplotlibdata", data)],
      )

You don't need anything special in your plotting script. Eg, the following works fine with recent versions of py2exe
from pylab import *
plot([1,2,3])
show()
matplotlib should be able to find your matplotlib data directory. You can still configure the defaults in dist/matplotlibdata/matplotlibrc after the application has been frozen.

Note you may get warnings like "The following modules appear to be missing" but in general I have found these to be harmless for freezing matplotlib.

To freeze GTK or GTKAgg, you need to do a couple of extra things, including creating a setup.cfg file and copying the lib and etc subdirectories of yout GTK install tree to your py2exe dist subdir. See the simple_plot_gtk subdirectory in the py2exe examples zip file.

If you want to reduce the size of your application by excluding certain backends, see the matplotlib py2exe wiki entry. """), ('CUSTOM', 'How do I dynamically change the rc defaults?', r""" If you want to customize a session of matplotlib, eg, the default font, linewidth, fontsize, etc, use the rc command. This changes the default for the rest of the session, or until you issue another rc command. See customize_rc.py for example usage."""), ('GTKPATH', 'I cannot import gtk / gdk / gobject', """ Basically, there are 3 things that I've seen cause failure (relative likelihood in parentheses):

There is a long thread on the pygtk mailing list where Cousing Stanley got his gtk corrupted; read this thread, which is filled with good troubleshooting advice. """ ), ('WHICHBACKEND', 'Which backend should I use?', """ Each of the backends offers different strengths. See the comparison of backends for a discussion of the issues.

"""), ('DATES', 'Can I plot dates?', r""" See the
dates tutorial. """), ('TWOSCALES', 'Can I plot data with two y axes scales?', r""" As of matplotlib-0.53, there is support for this. See two_scales.py. """), ('MATHTEXT', 'Can I include math expressions in my figures?', r"""As of matplotlib-0.51, you can use TeX markup in any text element. Just use raw strings and enclose the strings with dollar signs, as in title(r'$\alpha > \beta_i$'). See screenshot and the mathtext documentation for usage, requirements and backend information. """), ('BATCHMODE', 'Can I just generate images without having a window popup?', """ The easiest way to do this is use an image backend, either Agg, or Cairo, if you want to generate PNG images, e.g., for use in a web page, or PS, PDF or SVG if you want publication quality, scalable images. All of these backends run on all of the major platforms. One additional option on an X windows platform is to run the GTK backend under an Xvfb, which works nicely and is not too hard to setup. Contact jdhunter@ace.bsd.uchicago.edu for more information if you are interested setting this up."""), ('APPSERVER', 'Can I use matplotlib in a web application server?', """ Yes. matplotlb can be used with any web application server that can call python. It has been used with mod_python, xml_rpc, and other frameworks. You'll want to use one of the image backends; see image backends. You can work around the problem of small raster sizes by making your fonts appear larger for a given by decreasing the figure size and increasing the dpi. See ttf fonts for more information. matplotlib keeps a cache of the font information it finds on your system, so it needs a writable directory. It first tries HOME and if it is not found falls back on it's data path, which can be set with the MATPLOTLIBDATA environment variable. MATPLOTLIBDATA is the directory in which all of matplotlib's fonts, etc, live, and is not writable on a typical install, so the best approach is to set HOME to a writable directory. Also, I advise you not to use the pylab interface in a web application server (though you can). pylab does a fair amount of work under the hood, managing the current figure and so on, and in an application server you might rather have full control of the whole process. pylab is simply a thin wrapper to the object oriented matplotlib API; see the API FAQ. """ ), ('SHOW', "What's up with 'show'? Do I have to use it?", """ You do not need this function with the image backends (Agg, Cairo, PS, PDF, SVG) but you do need it with the GUI (GTK, WX, TkAgg, GTKAgg, GTKCairo) backends, unless you are running matplotlib in interactive mode.

Because it is expensive to draw, I want to avoid redrawing the figure many times in a batch script such as the following

  plot([1,2,3])            # draw here ?
  xlabel('time')           # and here ?
  ylabel('volts')          # and here ?
  title('a simple plot')   # and here ?
  show()
It is possible to force matplotlib to draw after every command, which is what you want in interactive mode, but in a script you want to defer all drawing until the script has executed. This is especially important for complex figures that take some time to draw. 'show' is designed to tell matplotlib that you're all done issuing commands and you want to draw the figure now. In the TkAgg backend, which can be used from an arbitrary python shell interactively, it also sets interactive mode. So you can launch your script with python -i myscript.py -dTkAgg and then change it interactively from the shell. IMPORTANT: show should be called at most once per script and it should be the last line of your script. At that point, the GUI takes control of the interpreter. If you want to force a figure draw, use draw instead. """), ('PSGUI', 'Can I save PS/EPS/PDF/SVG etc. from a GUI backend?', """ Yep. Just choose a filename that contains the desired extension and matplotlib will try and do the right thing. That is, if it's an eps file, it will include a bounding box, if it's a ps file it will output plain postscript. It is recommended you use matplotlib-0.91 or later for this feature to work properly, since far fewer options are available for all GUI backends prior to that. """), ('TEXTOVERLAP', 'My title or ticklabel or whatever is overlapping some other figure element, what should I do?', """ The default subplots take up a lot of room. If you need extra space for particularly large labels and titles, consider using custom axes, eg, axes([0.3, 0.3, 0.6, 0.6]) gives you more room to the left and at the bottom than the standard axes.

Other things to consider. With multiple subplots, eg, multiple rows, turn off the xticklabels for all but the lowest subplot if they are the same in all subplots xticks([]). You can make the fontsizes smaller, as in xlabel('time (s)', fontsize=8) or, for the tick labels
locs, labels = xticks()
set(labels, fontsize=8)
You can also set the default ticklabel size in your matplotlibrc file or override it for a single plot using rcParams."""), ('DYNAMIC', 'Can matplotlib do dynamic plots, like digital oscilloscopes or animations?', """ Absolutely. See for example, anim.py and system_monitor.py"""), ('AXES', 'Can I change the size of the subplots', """ subplot is just a helper function to generate regularly spaced axes. For more fine-grained control, you can position axes anywhere you want in any size using the axes command. See the axes command and the example axes_demo.py.

"""), ('IMAGES', 'Can matplotlib handle image data?', """ Yes - you can now plot images from numpy arrays with imshow. You can load png files into arrays imread; other image loaders coming soon."""), ('ROTATETICKS', 'How do I make vertical xticklabels?', """ You can set the rotation of any text instance to vertical

    from pylab import *
    plot([1,2,3,4], [1,4,9,16])
    set(gca(), 'xticks', [1,2,3,4])
    labels = set(gca(), 'xticklabels',
          ['Frogs', 'Hogs', 'Bogs', 'Slogs'])
    set(labels, 'rotation', 'vertical')
    show()
"""), ('WINFONTS', "On windows with GTK, I'm getting lots of messages about not finding the Times font", r""" Apparently GTK changed the default pango font file, because this is a new problem. You can set font aliases in C:\GTK\etc\pango\pango.aliases. Add a line like
times = "times new roman,angsana new,mingliu,simsun,\\
         gulimche,ms gothic,latha,mangal,code2000"
Another alternative is suggested by Gary Ruben
I just installed Gimp 2 for windows along with the latest GTK+ runtime
and noticed that it exhibited the same font problem I've been
experiencing for ages with matplotlib. I was getting WARNING **:

  Couldn't load font "MS Sans Serif 8" falling back to "Sans 8"
  errors.

It's addressed in their FAQ,
http://www2.arnes.si/~sopjsimo/gimp/faq.html>, reproduced here:

  # I installed Gimp 2.0 on Windows 9x/ME or NT 4, and I'm getting a
  lot of messages saying ** (gimp-2.0.exe:4294830849): WARNING **:
  Couldn't load font "MS Sans Serif 8" falling back to "Sans 8". What
  should I do?

  # You have two options:

  * Go to Control Panel->Display properties->Apperance tab, and set
  all fonts to Tahoma (or any other TrueType font).

  * Uninstall GTK+ 2.2.4, then re-install it without the GTK-Wimp
  component.

I took option B and now all is well with both Gimp and Matplotlib.
I'm running Win98 and the Gimp FAQ entry hints that it may be a
problem in Win98,ME and NT installations.
""" ), ('FREETYPE2', "Why are my fonts not being rendered properly?", """ This is probably due to an outdated freetype2 library. See font manager docs for details. """ ), ('SVG-BAKOMA-FONTS-MATHTEXT', """My SVG viewer doesn't properly display special (TeX) characters ('\sum', '\infty',etc.) generated by mathtext. Is this a bug?""", """ As of matplotlib-0.91.0, the glyph outlines for the font are embedded directly in the SVG file, so this should not occur. For matplotlib-0.90.0 and earlier, you need to install the BaKoMa fonts (TrueType version of the Computer Modern fonts) on your system. The BaKoMa fonts come packaged with matplotlib. They are located in the "site-packages/matplotlib/mpl-data/fonts/ttf" dir (the cm*.ttf files). Installation of the fonts varies from OS to OS. """ ), ('LEAKS', 'matplotlib appears to be leaking memory, what should I do?', """\ First, determine if it is a true memory leak. Python allocates memory in pools, rather than one object at a time, which can make memory leaks difficult to diagnose. Memory usage may appear to increase rapidly with each iteration, but should eventually reach a steady state if no true memory leaks exist. (For more fine-grained memory usage reporting, you can build a custom Python with the --without-pymalloc flag, which disables pool allocation.) If after sufficient iterations, you still see that memory usage is increasing, it is a likely a bonafide memory leak that should be reported.

The unit directory of the source tree contains an example scripts useful for diagnosing and reporting memory leaks. For example, memleak_hawaii.py is useful for finding plotting-related memory leaks, and memleak_gui.py helps find memory leaks in the GUI-backend. Please use something like these when reporting leaks so we get an idea of the magnitude of the problem (i.e. bytes per figure). Also please provide your platform, matplotlib version, backend and as much information about the versions of the libraries you are using: e.g. freetype, png and zlib. It would also help if you posted code so I could look for any obvious coding errors vis-a-vis matplotlib.

There are some known memory leaks in matplotlib-0.90.1 when used in conjunction with the Tk, Gtk, Wx, Qt and Qt4 GUI backends. Many of these leaks have resolutions in the current SVN version of matplotlib. However, the following library versions are known to have leaks that matplotlib triggers. If you have one of these versions and are experiencing memory leaks, you should upgrade your library. This is not an exhaustive list.

"""), ('LEAKS2', """I'd like to help diagnose a memory leak, rather than just report it. How do you recommend I do that?""", """\ I thought you'd never ask! Python memory leaks tend to fall into one of the following categories:

"""), ('GUIWIDGETS', "How do I control the properties of my figure window, eg title, size, etc...?", """ The only way currently to control the window size from the matlab interface is to set the figure size with the figsize option, eg figure(figsize=(10,12)). However, you can set window properties in a backend dependent manner with the figure manager instance.

  manager = get_current_fig_manager()
Thus to set the title in a gtk* backend, you could do
manager = get_current_fig_manager()
manager.window.set_title('hi mom')
Of course, now your scripts won't work with other matplotlib backends.

In theory, we could abstract the essential window calls and expose them in a GUI neutral manner. We are trying to resist the urge to become a GUI wrapping library so we can focus on being a plotting library.

If you need a lot of control over GUI properties, you may want to skip the pylab interface and use the matplotlib API directly, eg build a GTK app which embeds matplotlib. See examples/user_interfaces/embedding_in*.py in the matplotlib src distribution or at examples explaining how to embed matplotlib in your GUI of choice. """), ) @header@

matplotlib FAQ

Questions

Answers

+ for name,q,a, in FAQs:

@q@

@a@

- @footer@