Skip to content
Advertisement

PyCharm Matplotlib “UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure. plt.show()”

I am having problems with matplotlib.pyplot.show() function. I am using PyCharm on Linux, and i have a VirtualEnv. When i execute the file x.py in the built terminal in PyCharm (using venv) like this

$ python x.py

everything works fine, the function plt.show() renders and shows the plotted graph well. i did add print(matplotlib.get_backend()) to see which backend was used by default and the result was GTK3Agg.

The problem starts when i use the option Run and not the terminal. Then i get an error message

UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure. plt.show()

Anyways, i searched online and according to this and other links, i had to add backend: GTK3Agg in .config/matplotlib/matplotlibrc . The file did not exist so i created it myself. Now when i run again, i get the following error messages:

raise ImportError('backend Gtk3Agg requires cairo') from e ImportError: backend Gtk3Agg requires cairo

How can i fix this ?

Advertisement

Answer

I managed to solve my problem, thanks to @ImportanceOfBeingErnest pointing out that i had two environments, one where GTK and dependencies are installed, and one, which is used by PyCharm, where those are missing.

I had to go to Settings > Project interpreter and install matplotlib, pycairo and PyGObject.

Also neccessary to install pycairo and PyGObject were these packages, which i had to install from the terminal:

sudo dnf install cairo-devel (or libcairo2 in ubuntu)
sudo dnf install python3-devel
sudo dnf install gobject-introspection-devel
sudo dnf install cairo-gobject-devel

Now i can use GTK3Agg as my backend.

User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement