Matplotlib plots not showing up in Mac OSX?
I had the same problem, even I could see how a new application window was created and immediately disappeared.
Simple solution - just check if you have
# Assumes you have imported "matplotlib.pyplot" as "plt"
plt.show()
after the plot
I can verify this on my end as well. To fix, here's what I did
sudo port install py25-matplotlib +cairo+gtk2
sudo port install py26-matplotlib +cairo+gtk2
Also, we need to change the default backend to a GUI based one.
Edit the file ~/.matplotlib/matplotlibrc
, and add:
backend: GTKCairo
Also, you can try the following, which may allow you to not need the GTK or Cairo backends.
Edit ~/.matplotlib/matplotlibrc
and add:
backend: MacOSX
With the port with those variants installed, this works as well, but it doesn't require X11.
By the way, the error that I saw was the following:
/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-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 ('/Users/wlynch/.matplotlib/matplotlibrc') or with matplotlib.use()
(backend, matplotlib.matplotlib_fname()))
This is what worked for me. I just changed the import of Matplotlib
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
When you try
plt.savefig('myfilename.png')
instead of
plt.show()
does that save the correct image named myfilename.png
in the current path?
After the plot simply add -
plt.show()
The reason this works is to do with interactive vs non-interactive mode. If the backend is opened in non-interactive mode, plt.show()
is required at the end of the code chunk. You can check the status by calling plt.isinteractive()
and toggle the status using plt.ion()
and plt.ioff()