Matplotlib plots not showing up in Mac OSX?


I am running Mac OSX 10.5.8. I installed matplotlib using macports. I get some examples from the matplotlib gallery like this one, without modification:

I run it, get no error, but the picture does not show up. In Linux Ubuntu I get it.

Do you know what could be wrong here?

Asked By: Open the way



When you try


instead of

does that save the correct image named myfilename.png in the current path?

Answered By: ChristopheD

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/ 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()))
Answered By: Bill Lynch

just to add a note,

The matplotlibrc file was not present on my system and I had to to download a copy from the matplotlib website. Future users may have to do the same.

Answered By: Neil

I only had python 2.5 and I did not want to install python 2.6 on my mac. So I used different procedure mentioned in the following link to solve this problem:

What that one actually needs is the following steps:

1) Searching where is the directory “pygtk-2.0.pc” and locate it. For example mine was located in the following directory:


2) Adding the path information to envirement variable. For example:


3) Download the configuration information file “matplotlibrc” from matplotlib website

4) Change backend to MacOSX in the file and save it

5) Copy the file to directory .matplotlib
You can locate the directory in python by the following command:

import matplotlib
Answered By: Reshad Hosseini

This is what worked for me:

brew install pkg-config
brew link pkg-config
brew install pygtk
brew install freetype
brew install libpng

sudo ln -s /usr/local/Cellar/freetype/*/lib/pkgconfig/freetype2.pc /usr/local/lib/pkgconfig/freetype2.pc

git clone [email protected]:matplotlib/matplotlib.git
cd matplotlib
python build
python install


Answered By: xgMz

This is what worked for me. I just changed the import of Matplotlib

import matplotlib
import matplotlib.pyplot as plt
Answered By: ricardokrieg

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"

after the plot

Answered By: layser

Do the following if anyone is using spyder.

1.) Start Spyder from Anaconda Launcher
2.) Go to preferences -> IPython console -> Graphics -> Backend: changed it to “Automatic”
3.) Select “Apply” and close preferences
3.) Restart IPython kernel
4.) Create simple graphic like

Answered By: Aditya Gaonkar

As a temporary work around one can save the figure to a .png/.jpg/.pdf and make use of that file for the moment.

## assuming price is out DataFrame that contains columns that we want to plot 
Answered By: Karthik
sudo port install py37-matplotlib +cairo+gtk3
~/.matplotlib/matplotlibrc used 
backend: MacOSX

Seemed to work on MacOS Mojave 10.14.4 with python 3.7 on the example above.

Answered By: LocoMoco10

Mac comes with its own python (read from here, which is not the best), I would suggest just a clean install of some Python 3.7 or so along with Anaconda and then introduce them as interpreters to PyCharm. anything will work fine and you wont need to add ad-hoc solutions like “backend: MacOSX” or so.

Answered By: Hassan Bahaloo

I wanna share this workable solution for me,

import matplotlib
import platform
if platform.system() == 'Darwin':
Answered By: Casper Chang

After the plot simply add –

The reason this works is to do with interactive vs non-interactive mode. If the backend is opened in non-interactive mode, 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()

Answered By: nphadke

The default python provided in (Ana)conda is not a framework build. However, a framework build can easily be installed, both in the main environment and in conda envs: install (conda install and use pythonw rather than python.

Answered By: BayCode
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.