I am trying to plot a simple graph using pyplot, e.g.:
import matplotlib.pyplot as plt plt.plot([1,2,3],[5,7,4]) plt.show()
but the figure does not appear and I get the following message:
UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
I saw in several places that one had to change the configuration of matplotlib using the following:
import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt
I did this, but then got an error message because it cannot find a module:
ModuleNotFoundError: No module named 'tkinter'
Then, I tried to install "tkinter" using
pip install tkinter (inside the virtual environment), but it does not find it:
Collecting tkinter Could not find a version that satisfies the requirement tkinter (from versions: ) No matching distribution found for tkinter
I should also mention that I am running all this on Pycharm Community Edition IDE using a virtual environment, and that my operating system is Linux/Ubuntu 18.04.
I would like to know how I can solve this problem in order to be able to display the graph.
I found a solution to my problem (thanks to the help of ImportanceOfBeingErnest).
All I had to do was to install
tkinter through the Linux bash terminal using the following command:
sudo apt-get install python3-tk
instead of installing it with
pip or directly in the virtual environment in Pycharm.
In my case, the error message was implying that I was working in a headless console. So
plt.show() could not work. What worked was calling
import matplotlib.pyplot as plt plt.plot([1,2,3], [5,7,4]) plt.savefig("mygraph.png")
I found the answer on a github repository.
If you use Arch Linux (distributions like
Antegros) simply type:
sudo pacman -S tk
And all will work perfectly!
import tkinter because pycharm already installed tkinter for you, I looked Install tkinter for Python
You can maybe try:
import tkinter import matplotlib matplotlib.use('TkAgg') plt.plot([1,2,3],[5,7,4]) plt.show()
as a tkinter-installing way
I've tried your way, it seems no error to run at my computer, it successfully shows the figure. maybe because pycharm have tkinter as a system package, so u don't need to install it. But if u can't find tkinter inside, you can go to Tkdocs to see the way of installing tkinter, as it mentions, tkinter is a core package for python.
pip3 install PyQt5==5.9.2
It works for me.
I too had this issue in PyCharm. This issue is because you don't have tkinter module in your machine.
To install follow the steps given below (select your appropriate os)
For ubuntu users
sudo apt-get install python-tk
sudo apt-get install python3-tk
For Centos users
sudo yum install python-tkinter
sudo yum install python3-tkinter
For Windows, use pip to install tk
After installing tkinter restart your Pycharm and run your code, it will work
This worked with R reticulate. Found it here.
1: matplotlib.use( 'tkagg' )
2: matplotlib$use( 'tkagg' )
import numpy as np import matplotlib.pyplot as plt from matplotlib import style import matplotlib matplotlib.use( 'tkagg' ) style.use("ggplot") from sklearn import svm x = [1, 5, 1.5, 8, 1, 9] y = [2, 8, 1.8, 8, 0.6, 11] plt.scatter(x,y) plt.show()
I added %matplotlib inline and my plot showed up in Jupyter Notebook.
After upgrading lots of packages (
Spyder 3 to 4,
Tensorflow and lots of their dependencies), I had the same problem today! I cannot figure out what happened; but the (conda-based) virtual environment that kept using
Spyder 3 did not have the problem. Although installing
tkinter or changing the backend,
via matplotlib.use('TkAgg) as shown above, or this nice post on how to change the backend, might well resolve the problem, I don't see these as rigid solutions. For me, uninstalling
matplotlib and reinstalling it was magic and the problem was solved.
pip uninstall matplotlib
... then, install
pip install matplotlib
From all the above, this could be a package management problem, and BTW, I use both
pip, whenever feasible.
The comment by @xicocaio should be highlighted.
tkinter is python version-specific in the sense that
sudo apt-get install python3-tk will install tkinter exclusively for your default version of python. Suppose you have different python versions within various virtual environments, you will have to install tkinter for the desired python version used in that virtual environment. For example,
sudo apt-get install python3.7-tk. Not doing this will still lead to
No module named ' tkinter' errors, even after installing it for the global python version.
Just in case if this helps anybody.
Python version: 3.7.7 platform: Ubuntu 18.04.4 LTS
This came with default python version 3.6.9, however I had installed my own 3.7.7 version python on it (installed building it from source)
tkinter was not working even when the
help('module') shows tkinter in the list.
The following steps worked for me:
sudo apt-get install tk-dev.
rebuild the python: 1. Navigate to your python folder and run the checks:
cd Python-3.7.7 sudo ./configure --enable-optimizations
sudo make -j 8--- here 8 are the number of processors, check yours using
sudo make altinstall
Don't use sudo make install, it will overwrite default 3.6.9 version, which might be messy later.
python3.7 -m tkinter
A windows box will pop up, your tkinter is ready now.
When I ran into this error on Spyder, I changed from running my code line by line to highlighting my block of plotting code and running that all at once. Voila, the image appeared.
You can change the matplotlib using backend using the from
agg to Tkinter
TKAgg using command
Linux Mint 19. Helped for me:
sudo apt install tk-dev
P.S. Recompile python interpreter after package install.
issue = “UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.”
And this worked for me
import matplotlib import matplotlib.pyplot as plt matplotlib.use('Qt5Agg')