python matplotlib framework under macosx?
There are two ways Python can be built and installed on Mac OS X. One is as a traditional flat Unix-y shared library. The other is known as a framework
install, a file layout similar to other frameworks on OS X where all of the component directories (include
, lib
, bin
) for the product are installed as subdirectories under the main framework directory. The Fink
project installs Pythons using the Unix shared library method. Most other distributors, including the Apple-supplied Pythons in OS X, the python.org
installers, and the MacPorts
project, install framework
versions of Python. One of the advantages of a framework installation is that it will work properly with various OS X API calls that require a window manager connection (generally GUI-related interfaces) because the Python interpreter is packaged as an app bundle within the framework.
If you do need the functions in matplotlib that require the GUI functions, the simplest approach may be to switch to MacPorts which also packages matplotlib (port py27-matplotlib
) and its dependencies. If so, be careful not to mix packages between Fink
and MacPorts
. It's best to stick with one or the other unless you are really careful. Adjust your shell path accordingly; it would be safest to remove all of the Fink packages and install MacPorts versions.
Python on Mac OS Pycharm gives framework error with import matplotlib.pyplot as plt
For details refer: what-is-a-backend. You need to set your backend. There are two types of backends: user interface backends (for use in pygtk, wxpython, tkinter, qt4, or macosx; also referred to as “interactive backends”) and hardcopy backends to make image files (PNG, SVG, PDF, PS; also referred to as “non-interactive backends”).
There are four ways to configure your backend. If they conflict each other, the method mentioned last in the following list will be used, e.g. calling use() will override the setting in your matplotlibrc.
The backend parameter in your matplotlibrc file (see Customizing matplotlib):
backend : WXAgg # use wxpython with antigrain (agg) rendering
Setting the MPLBACKEND environment variable, either for your current shell or for a single script:
> export MPLBACKEND="module://my_backend"
> python simple_plot.py
> MPLBACKEND="module://my_backend" python simple_plot.pySetting this environment variable will override the backend parameter in any matplotlibrc, even if there is a matplotlibrc in your current working directory. Therefore setting MPLBACKEND globally, e.g. in your .bashrc or .profile, is discouraged as it might lead to counter-intuitive behavior.
To set the backend for a single script, you can alternatively use the -d command line argument:
> python script.py -dbackend
This method is deprecated as the -d argument might conflict with scripts which parse command line arguments (see issue #1986). You should use MPLBACKEND instead.
If your script depends on a specific backend you can use the use() function:
import matplotlib
matplotlib.use('PS') # generate postscript output by defaultIf you use the use() function, this must be done before importing matplotlib.pyplot. Calling use() after pyplot has been imported will have no effect. Using use() will require changes in your code if users want to use a different backend. Therefore, you should avoid explicitly calling use() unless absolutely necessary.
Note:Backend name specifications are not case-sensitive; e.g., ‘GTKAgg’ and ‘gtkagg’ are equivalent.
Installation Issue with matplotlib Python
Problem Cause
In mac os image rendering back end of matplotlib (what-is-a-backend to render using the API of Cocoa by default). There are Qt4Agg and GTKAgg and as a back-end is not the default. Set the back end of macosx that is differ compare with other windows or linux os.
Solution
- I assume you have installed the pip matplotlib, there is a directory in your root called
~/.matplotlib
. - Create a file
~/.matplotlib/matplotlibrc
there and add the following code:backend: TkAgg
From this link you can try different diagrams.
matplotlib RuntimeError: Python is not installed as a framework
I run my script in virtualenv. Python version is 3.5.
Add a line:
backend: TkAgg
in file:
~/.matplotlib/matplotlibrc
This solved the problem.
If you want to know more about why adding this solves the problem, you can read about customizing matplotlib's backend. And TkAgg solves this issue because of it's dependency with Tkinter.
Related Topics
What's a Good Equivalent to Subprocess.Check_Call That Returns the Contents of Stdout
How to Access a Standard-Library Module in Python When There Is a Local Module with the Same Name
Why Does @Foo.Setter in Python Not Work for Me
Removing Horizontal Lines in Image (Opencv, Python, Matplotlib)
Python Script Execute Commands in Terminal
Is There a Module for Balanced Binary Tree in Python's Standard Library
Copy File or Directories Recursively in Python
How to Remove Square Bracket from Pandas Dataframe
How to Melt 2 Columns at the Same Time
Any Reason Not to Use '+' to Concatenate Two Strings
Find Substring in String But Only If Whole Words
Attributeerror: 'Pandasexprvisitor' Object Has No Attribute 'Visit_Ellipsis', Using Pandas Eval
Reference Requirements.Txt for the Install_Requires Kwarg in Setuptools Setup.Py File
How to Loop Through a List by Twos
Python - Initializing Multiple Lists/Line