"UserWarning: Matplotlib está usando agg, que é um back-end não-GUI, então não pode mostrar a figura." ao traçar a figura com pyplot no Pycharm
Estou tentando traçar um gráfico simples usando pyplot, por exemplo:
mas a figura não aparece e recebo a seguinte mensagem:
Eu vi em vários lugares que era preciso alterar a configuração do matplotlib usando o seguinte:
Fiz isso, mas recebi uma mensagem de erro porque não consigo encontrar um módulo:
Então, tentei instalar o "tkinter" usando pip install tkinter(dentro do ambiente virtual), mas não encontrou:
Devo também mencionar que estou executando tudo isso no Pycharm Community Edition IDE usando um ambiente virtual, e que meu sistema operacional é Linux / Ubuntu 18.04.
Gostaria de saber como posso resolver este problema para poder visualizar o gráfico.
— johnwolf1987
Esqueça o gráfico por um momento. Seu problema é instalar o tkinter. Você tentou alguma das soluções disponíveis para isso, por exemplo, stackoverflow.com/questions/4783810/install-tkinter-for-python ?
Você está realmente usando o tkinter para alguma coisa ou apenas o escolheu como um back-end plt?
— G. Anderson de
@ImportanceOfBeingErnest: Obrigado pela dica. De fato, vou me concentrar em instalar o tkinter primeiro. Vou dar uma olhada no link que você forneceu e ver se posso fazer algo com ele.
@ G.Anderson: Eu não tinha ideia do que era tkinter antes de encontrar esse erro com matplotlib. Agora estou tentando instalá-lo apenas para poder mostrar gráficos (então sim, acho que apenas o escolhi como um backend plt). Se você souber de alguma outra maneira (ou seja, sem usar tkinter), ficaria feliz em saber.
@ G.Anderson: Eu executei o script para percorrer os diferentes back-ends. Acontece que apenas o TkAgg está disponível! Na verdade, acabei de instalá-lo antes de testar o script.
Encontrei uma solução para o meu problema (graças à ajuda do ImportanceOfBeingErnest ).
Tudo que precisei fazer foi instalar tkinterpor meio do terminal bash do Linux usando o seguinte comando:
em vez de instalá-lo com pipou diretamente no ambiente virtual do Pycharm.
Na verdade, também percebi que, desde que instalei o tkinter, não preciso mais adicionar as duas primeiras linhas do meu código ( import matplotlibe matplotlib.use('TkAgg'))
Para completar, em OpenSuse Leap o pacote que eu tive que instalar é chamado python3-matplotlib-tk.
— Eldrad
Essa resposta provavelmente poderia mencionar que tkinteré específico da versão do python, no sentido de que este comando em particular será instalado tkinterexclusivamente para sua versão padrão do python. Suponha que você tenha instalações de versões diferentes de python para vários ambientes virtuais. Nesse caso, você terá que instalá-lo para a versão do Python desejada usada naquele venv em funcionamento. Por exemplo, no meu caso: sudo apt-get install python3.7-tk. Não saber disso me fez lutar um tempo razoável para não obter erros de nome de módulo 'tkinter', mesmo depois de instalá-lo para minha versão global de python.
— xicocaio
Tive que instalar um Terminal Bash do Linux no meu PC para executar este comando. E funcionou! Veja howtogeek.com/249966/…
No meu caso, a mensagem de erro sugeria que eu estava trabalhando em um console sem interface. Portanto, plt.show()não poderia funcionar. O que funcionou foi chamar plt.savefig:
Eu encontrei a resposta em um repositório github .
— vinzee
Se você usa Arch Linux (distribuições como Manjaroou Antegros) simplesmente digite:
E tudo funcionará perfeitamente!
— dexXxed
Obrigado. Estava procurando por isso.
— logicOnAbstractions
Tente import tkinterporque o pycharm já instalou o tkinter para você, procurei Instalar o tkinter para Python
como uma forma de instalação do tkinter
Já tentei do seu jeito, parece que não há erro ao rodar no meu computador, ele mostra a figura com sucesso. talvez porque o pycharm tem tkinter como um pacote de sistema, então você não precisa instalá-lo. Mas se você não conseguir encontrar o tkinter dentro, você pode ir ao Tkdocs para ver a maneira de instalar o tkinter, como ele menciona, tkinter é um pacote básico para python.
Obrigado pela sua sugestão. Infelizmente, não funciona ( ModuleNotFoundError: No module named 'tkinter'). Vou tentar instalar o tkinter de outra forma.
Eu também tive esse problema no PyCharm. Esse problema ocorre porque você não tem o módulo tkinter em sua máquina.
Para instalar, siga as etapas abaixo (selecione seu sistema operacional apropriado)
Para usuários do Ubuntu
Para usuários Centos
sudo yum install python-tkinter
sudo yum install python3-tkinter
Para Windows, use pip para instalar tk
Depois de instalar o tkinter reinicie seu Pycharm e execute seu código, ele vai funcionar
— Arjun Kumar
pip3 install PyQt5==5.9.2
— Manish Gupta
Sim, funciona! Eu instalei dentro do meu ambiente virtual através do terminal do PyCharm.
— WH Lee
Eu executo "pip3 install PyQt5" sem especificar o número da versão.
— oraclesoon
Você pode alterar o matplotlib usando o backend usando o de aggpara o Tkinter TKAggusando o comando
— Shahir Ansari
Isso foi muito útil devido ao fato de que eu não tive que recarregar meu console ipython interativo lol. Obrigado
— Iulian Pinzaru
Linux Mint 19. Ajudou para mim:
PS Recompile o interpretador python após a instalação do pacote.
— Michael Sizonenko
Versão Python: plataforma 3.7.7: Ubuntu 18.04.4 LTS
Isso veio com o python padrão versão 3.6.9, no entanto, eu tinha instalado minha própria versão 3.7.7 do python nele (instalado compilando-o a partir da fonte)
tkinter não estava funcionando mesmo quando o help('module') mostra tkinter na lista.
As etapas a seguir funcionaram para mim:
sudo apt-get install tk-dev.
reconstruir o python: 1. Navegue até a pasta python e execute as verificações:
Construir usando o comando make: sudo make -j 8 --- aqui 8 são o número de processadores, verifique o seu usando o nproccomando.
Instalando usando:
Não use sudo make install, ele sobrescreverá a versão 3.6.9 padrão, que pode ser confusa mais tarde.
Verifique o tkinter agora
python3.7 -m tkinter
Uma caixa de janela aparecerá, seu tkinter está pronto agora.
Depois de atualizar muitos pacotes ( Spyder3 a 4,Keras e Tensorflowe lotes de suas dependências), eu tive o mesmo problema hoje! Não consigo descobrir o que aconteceu; mas o ambiente virtual (baseado em conda) que continuou usando Spyder3 não teve o problema. Embora instalar tkinterou alterar o back-end, via matplotlib.use('TkAgg)como mostrado acima, ou este belo post sobre como alterar o back-end , possa resolver o problema, não vejo essas soluções como rígidas. Para mim, desinstalar matplotlibe reinstalar foi mágico e o problema foi resolvido.
... então, instale
De todo o exposto, este pode ser um problema de gerenciamento de pacote, e BTW, eu uso ambos conda e pip, sempre que possível.
Quando encontrei esse erro no Spyder, mudei de executar meu código linha por linha para destacar meu bloco de plotagem de código e executar tudo de uma vez. Voila, a imagem apareceu.
— GuyStalks
Eu adicionei % matplotlib embutido e meu gráfico apareceu no Jupyter Notebook.
— chinelo Okafor
O comentário de @xicocaio deve ser destacado.
tkinter é específico da versão do python, no sentido de que sudo apt-get install python3-tkinstalará o tkinter exclusivamente para sua versão padrão do python. Suponha que você tenha diferentes versões de python em vários ambientes virtuais, você terá que instalar o tkinter para a versão de python desejada usada naquele ambiente virtual. Por exemplo sudo apt-get install python3.7-tk,. Não fazer isso ainda levará a No module named ' tkinter'erros, mesmo depois de instalá-lo para a versão global do python.