"Advertencia de usuario: Matplotlib actualmente usa agg, que es un backend sin GUI, por lo que no puede mostrar la figura". al trazar una figura con pyplot en Pycharm
Estoy intentando 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 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.
Encontré y probé algunos consejos para reconfigurar el "backend" mencionado en esa advertencia, así:
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
pero esto me da un mensaje de error:
ModuleNotFoundError: No module named 'tkinter'
Supuse que tenía que instalar este módulo por separado, pero pip install tkinter
no funciona:
Collecting tkinter
Could not find a version that satisfies the requirement tkinter (from versions: )
No matching distribution found for tkinter
¿Cómo puedo hacer que Matplotlib muestre el gráfico?
Ver también : ¿ Por qué parece que tkinter (o tortuga) falta o está roto? ¿No debería ser parte de la biblioteca estándar? . Esta pregunta no está duplicada, porque las respuestas analizan otros backends además del de Tkinter.
Consulte también _tkinter.TclError: sin nombre para mostrar ni variable de entorno $DISPLAY para problemas con los intentos de utilizar Matplotlib de forma remota.
Solución 1: es instalar el backend de la GUItk
Encontré una solución a mi problema (gracias a la ayuda de ImportanceOfBeingErnest ).
Todo lo que tuve que hacer fue 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.
Solución 2: instale cualquiera de los matplotlib
backends GUI compatibles
- La solución 1 funciona bien porque obtienes un backend GUI... en este caso el
TkAgg
- sin embargo, también puede solucionar el problema instalando cualquiera de los backends GUI de matplolib como
Qt5Agg
,,, etc.GTKAgg
Qt4Agg
- por ejemplo,
pip install pyqt5
también solucionará el problema
- por ejemplo,
NOTA:
- Por lo general, este error aparece cuando instala matplotlib con pip y está intentando mostrar un gráfico en una ventana GUI y no tiene un módulo de Python para mostrar la GUI.
- Los autores de
matplotlib
hicieron que los departamentos de software pypi no dependieran de ningún backend de GUI porque algunas personas lo necesitanmatplotlib
sin ningún backend de GUI.
En mi caso, el mensaje de error implicaba que estaba trabajando en una consola sin cabeza. Entonces plt.show()
no pudo funcionar. Lo que funcionó fue llamar 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!
Instalación sencilla
pip3 install PyQt5==5.9.2
Esto funciona para mi.