I am new user of matplotlib, my platform is Ubuntu 10.04 Python 2.6.5
This is my code
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.plot([1,2,3])
The error is:
/usr/local/lib/python2.6/dist-packages/matplotlib/backends/__init__.py:41: UserWarning:
Your currently selected backend, 'agg' does not support show().
Please select a GUI backend in your matplotlibrc file ('/usr/local/lib/python2.6/dist-packages/matplotlib/mpl-data/matplotlibrc')
or with matplotlib.use()
(backend, matplotlib.matplotlib_fname()))
- I installed the Anti-Grain Geometry library
apt-get install libagg
but it is doesn't work. - I tried to use other argument of backend like 'GTK' and 'TkAgg'.
- I installed
python-gtk2-dev
package, but still the error is below. - Can anyone tell me an executable backend argument and its dependency library?
Here is the error:
>>> matplotlib.use('GTK')
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/matplotlib/pyplot.py", line 95, in <module>
new_figure_manager, draw_if_interactive, show = pylab_setup()
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/__init__.py", line 25, in pylab_setup
globals(),locals(),[backend_name])
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/backend_gtk.py", line 28, in <module>
from matplotlib.backends.backend_gdk import RendererGDK, FigureCanvasGDK
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/backend_gdk.py", line 29, in <module>
from matplotlib.backends._backend_gdk import pixbuf_get_pixels_array
ImportError: No module named _backend_gdk
I hit this when trying to compile python, numpy, scipy, matplotlib in my own VIRTUAL_ENV
Before installing matplotlib you have to build and install: pygobject pycairo pygtk
And then do it with matplotlib: Before building matplotlib check with 'python ./setup.py build --help' if 'gtkagg' backend is enabled. Then build and install
Before export PKG_CONFIG_PATH=$VIRTUAL_ENV/lib/pkgconfig
FYI, I found I needed to put
matplotlib.use('Agg')
first in Python import order. For what I was doing (unit testing needed to be headless) that meant puttingat the top of my master test script. I didn't have to touch any other files.
AGG
backend is for writing to file, not for rendering in a window. See the backend FAQ at the matplotlib web site.For the second error, maybe your matplotlib distribution is not compiled with GTK support, or you miss the PyGTK package. Try to install it.
Do you call the
show()
method inside a terminal or application that has access to a graphical environment?Try other GUI backends, in this order:
TkAgg
WX
QTAgg
QT4Agg
The errors you posted are unrelated. The first one is due to you selecting a backend that is not meant for interactive use, i.e. agg. You can still use (and should use) those for the generation of plots in scripts that don't require user interaction.
If you want an interactive lab-environment, as in Matlab/Pylab, you'd obviously import a backend supporting gui usage, such as Qt4Agg (needs Qt and AGG), GTKAgg (GTK an AGG) or WXAgg (wxWidgets and Agg).
I'd start by trying to use WXAgg, apart from that it really depends on how you installed Python and matplotlib (source, package etc.)
This can also be set in the configuration file
matplotlibrc
(as explained in the error message), for instance:That way, the backend does not need to be hardcoded if the code is shared with other people. For more information, check the documentation.
Before starting python, you can do in bash