Estoy tratando de trazar un gráfico simple usando pyplot, por ejemplo:
import matplotlib.pyplot as plt plt.plot([1,2,3],[5,7,4]) plt.show()
pero no me aparece la figura y me sale el siguiente mensaje:
UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
Vi en varios lugares que uno tenía que cambiar la configuración de matplotlib usando lo siguiente:
import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt
Hice esto, pero luego recibí un mensaje de error porque no puede encontrar un módulo:
ModuleNotFoundError: No module named 'tkinter'
Luego, intenté instalar "tkinter" usando pip install tkinter
(dentro del entorno virtual), pero no lo encuentra:
Collecting tkinter Could not find a version that satisfies the requirement tkinter (from versions: ) No matching distribution found for tkinter
También debo mencionar que estoy ejecutando todo esto en Pycharm Community Edition IDE usando un entorno virtual, y que mi sistema operativo es Linux/Ubuntu 18.04.
Me gustaria saber como puedo solucionar este problema para poder visualizar la grafica.
tk
Encontré una solución a mi problema (gracias a la ayuda de ImportanceOfBeingErnest ).
Todo lo que tenía que hacer era instalar tkinter
a través de la terminal bash de Linux usando el siguiente comando:
sudo apt-get install python3-tk
en lugar de instalarlo con pip
o directamente en el entorno virtual en Pycharm.
matplotlib
TkAgg
Qt5Agg
, GTKAgg
, Qt4Agg
, etc.pip install pyqt5
también solucionará el problemaNOTA:
matplotlib
hicieron que los departamentos de software de pypi no dependieran de ningún backend de GUI porque algunas personas necesitan matplotlib
sin ningún backend de GUI.En mi caso, el mensaje de error implicaba que estaba trabajando en una consola sin periféricos. Así que plt.show()
no pudo funcionar. Lo que funcionó fue llamar a plt.savefig
:
import matplotlib.pyplot as plt plt.plot([1, 2, 3], [5, 7, 4]) plt.savefig("mygraph.png")
Encontré la respuesta en un repositorio de github .
Si usa Arch Linux (distribuciones como Manjaro
o Antegros
) simplemente escriba:
sudo pacman -S tk
¡Y todo funcionará perfectamente!