"UserWarning: Matplotlib şu anda GUI olmayan bir arka uç olan agg kullanıyor, bu yüzden şekli gösteremiyor." Pycharm'da pyplot ile şekil çizerken


128

Pyplot kullanarak basit bir grafik çizmeye çalışıyorum, örneğin:

import matplotlib.pyplot as plt
plt.plot([1,2,3],[5,7,4])
plt.show()

ancak rakam görünmüyor ve şu mesajı alıyorum:

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

Aşağıdakileri kullanarak matplotlib'in yapılandırmasını değiştirmek zorunda olduğumu birkaç yerde gördüm:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

Bunu yaptım, ancak bir modül bulamadığı için bir hata mesajı aldım:

ModuleNotFoundError: No module named 'tkinter'

Daha sonra pip install tkinter(sanal ortamın içinde) kullanarak "tkinter" kurmaya çalıştım , ancak bulamadı:

Collecting tkinter
  Could not find a version that satisfies the requirement tkinter (from versions: )
No matching distribution found for tkinter

Tüm bunları Pycharm Community Edition IDE üzerinde sanal bir ortam kullanarak çalıştırdığımı ve işletim sistemimin Linux / Ubuntu 18.04 olduğunu da belirtmeliyim.

Grafiği görüntüleyebilmek için bu sorunu nasıl çözebileceğimi bilmek istiyorum.


7
Bir an için grafiği unutun. Senin sorunun tkinter'ı kurmak. Bunun için mevcut çözümlerden herhangi birini denediniz mi , örneğin stackoverflow.com/questions/4783810/install-tkinter-for-python ?
ImportanceOfBeingErnest

3
Aslında tkinter'ı herhangi bir şey için mi kullanıyorsunuz, yoksa sadece bir plt arka uç olarak mı seçtiniz?
G. Anderson

1
@ImportanceOfBeingErnest: İpucu için teşekkürler. İlk önce tkinter'i kurmaya odaklanacağım. Sağladığınız bağlantıya bir göz atacağım ve bundan bir şey çıkarabilecek miyim bir bakacağım.
johnwolf1987

1
@ G.Anderson: Matplotlib ile bu hatayla karşılaşmadan önce tkinterin ne olduğu hakkında hiçbir fikrim yoktu. Şimdi sadece grafikleri gösterebilmek için kurmaya çalışıyorum (yani evet, sanırım onu ​​sadece bir plt arka uç olarak seçtim). Eğer başka bir yol biliyorsanız (yani tkinter kullanmadan), bunu duymaktan memnuniyet duyarım.
johnwolf1987

2
@ G.Anderson: Farklı arka uçlar arasında geçiş yapmak için betiği çalıştırdım. Sadece TkAgg Kullanılabilir olduğu ortaya çıktı! Doğrusu, betiği test etmeden önce kurmuştum.
johnwolf1987

Yanıtlar:


194

Sorunuma bir çözüm buldum ( ImportanceOfBeingErnest'in yardımıyla ).

Tek yapmam gereken, tkinteraşağıdaki komutu kullanarak Linux bash terminali aracılığıyla kurmaktı:

sudo apt-get install python3-tk

pipPycharm'daki sanal ortama veya doğrudan kurmak yerine .


7
Aslında, import matplotlibmatplotlib.use('TkAgg')
tkinter'i kurduğumdan beri

Tamlık için, OpenSuse Leap altında, yüklemem gereken paket çağrılır python3-matplotlib-tk.
Eldrad

5
Bu cevap, muhtemelen tkinterbu belirli komutun tkintersizin varsayılan python sürümünüz için yükleneceği anlamında, bunun python sürümüne özgü olduğundan bahsedebilir . Çeşitli sanal ortamlar için farklı python sürüm kurulumlarınız olduğunu varsayalım. Bu durumda, o çalışan venv'de kullanılan istenen python sürümü için yüklemeniz gerekecektir. Örneğin, benim durumumda: sudo apt-get install python3.7-tk. Bunu bilmemek, global python sürümüm için yükledikten sonra bile modül adı 'tkinter' hatası almamak için makul bir süre uğraşmamı sağladı.
xicocaio

Bu komutu çalıştırmak için bilgisayarıma bir Linux Bash Terminali kurmam gerekiyordu. Ve işe yaradı! Bkz howtogeek.com/249966/...
arame3333

38

Benim durumumda, hata mesajı başsız bir konsolda çalıştığımı ima ediyordu. Yani plt.show()işe yaramadı. Ne işe yaradı plt.savefig:

import matplotlib.pyplot as plt

plt.plot([1,2,3], [5,7,4])
plt.savefig("mygraph.png")

Cevabı bir github deposunda buldum .


16

Arch Linux kullanıyorsanız ( Manjaroveya gibi dağıtımlar Antegros) şunu yazın:

sudo pacman -S tk

Ve hepsi mükemmel çalışacak!


1
Teşekkür ederim. Onu arıyordum.
logicOnAbstractions

7

Deneyin, import tkinterçünkü pycharm sizin için tkinter'ı zaten kurdu, ben de baktım Install tkinter for Python

Belki deneyebilirsin:

import tkinter
import matplotlib
matplotlib.use('TkAgg')
plt.plot([1,2,3],[5,7,4])
plt.show()

bir tkinter yükleme yolu olarak

Yolunuzu denedim, bilgisayarımda çalışmamda bir hata yok gibi görünüyor, şekli başarıyla gösteriyor. belki pycharm'ın bir sistem paketi olarak tkinter olması nedeniyle, onu yüklemenize gerek yoktur. Ama içinde tkinter bulamazsanız , tkinter'ı kurmanın yolunu görmek için Tkdocs'a gidebilirsiniz, dediği gibi , tkinter python için temel bir pakettir.


Öneriniz için teşekkür ederiz. Maalesef çalışmıyor ( ModuleNotFoundError: No module named 'tkinter'). Tkinter'ı başka bir şekilde kurmaya çalışacağım.
johnwolf1987

6

Ben de PyCharm'da bu sorunu yaşadım. Bu sorun, makinenizde tkinter modülünüzün olmamasıdır.

Yüklemek için aşağıda verilen adımları izleyin (uygun işletim sisteminizi seçin)

Ubuntu kullanıcıları için

 sudo apt-get install python-tk

veya

 sudo apt-get install python3-tk

Centos kullanıcıları için

 sudo yum install python-tkinter

veya

 sudo yum install python3-tkinter

Windows için tk'yi kurmak için pip kullanın

Tkinter'i kurduktan sonra Pycharm'ınızı yeniden başlatın ve kodunuzu çalıştırın, çalışacaktır


4

Basit kurulum

pip3 install PyQt5==5.9.2

Benim için çalışıyor.


Evet, işe yarıyor! PyCharm'ın terminali aracılığıyla sanal ortamımın içine kurdum.
WH Lee

Sürüm numarasını belirtmeden "pip3 install PyQt5" çalıştırıyorum.
oraclesoon

1

Arka ucu kullanarak matplotlib'i aggTkinter'e TKAggkomut kullanarak değiştirebilirsiniz.

matplotlib.use('TKAgg',warn=False, force=True)

İnteraktif ipython konsolumu lol yeniden yüklemem gerekmediğinden bu çok yardımcı oldu. Teşekkürler
Iulian Pinzaru

0

Linux Mint 19. Bana yardımcı oldu:

sudo apt install tk-dev

PS Paket kurulumundan sonra python yorumlayıcısını yeniden derleyin.


0

Bunun kimseye faydası olacaksa diye.

Python sürümü: 3.7.7 platformu: Ubuntu 18.04.4 LTS

Bu, varsayılan python 3.6.9 sürümüyle geldi, ancak üzerine kendi 3.7.7 sürüm python'umu kurdum (kaynaktan oluşturarak kurdum)

help('module')Gösteriler listeye girse bile tkinter çalışmıyordu .

Aşağıdaki adımlar benim için çalıştı:

  1. sudo apt-get install tk-dev.

python'u yeniden oluşturun: 1. python klasörünüze gidin ve kontrolleri çalıştırın:

cd Python-3.7.7
sudo ./configure --enable-optimizations
  1. Make komutunu kullanarak oluşturun: sudo make -j 8 --- burada 8 işlemci sayısı, nprockomut kullanarak sizinkini kontrol edin .
  2. Kullanarak yükleme:

    sudo make altinstall
    

Sudo make install'ı kullanmayın, daha sonra dağınık olabilecek varsayılan 3.6.9 sürümünün üzerine yazacaktır.

  1. Şimdi tkinter'ı kontrol edin
    python3.7 -m tkinter
    

Bir pencere kutusu açılacaktır, tkinter'ınız artık hazırdır.


0

Pek çok paketi ( Spyder3'ten 4'e Kerasve Tensorflowbunların bağımlılıklarının çoğunu) yükselttikten sonra , bugün de aynı sorunu yaşadım! Ne olduğunu çözemiyorum; ancak 3'ü kullanmaya devam eden (koşul tabanlı) sanal ortamda Spydersorun yoktu. tkinterArka ucu yüklemek veya değiştirmek, via matplotlib.use('TkAgg)yukarıda gösterildiği gibi veya arka ucun nasıl değiştirileceğine dair bu güzel gönderi sorunu çözebilir, ancak bunları katı çözümler olarak görmüyorum. Benim için, matplotlibonu kaldırıp yeniden yüklemek sihirdi ve sorun çözüldü.

pip uninstall matplotlib

... sonra kur

pip install matplotlib

Yukarıdakilerin hepsinden, bu bir paket yönetimi sorunu olabilir ve BTW, her ikisini de kullanıyorum condave pipmümkün olduğunda.


0

Spyder'da bu hatayla karşılaştığımda, kodumu satır satır çalıştırmayı, kod çizme bloğumu vurgulamaya ve hepsini aynı anda çalıştırmaya geçtim. Voila, görüntü belirdi.



0

@Xicocaio tarafından yapılan yorum vurgulanmalıdır.

tkinter, sudo apt-get install python3-tktkinter'ı yalnızca sizin varsayılan python sürümünüz için kuracak şekilde python sürümüne özgüdür . Çeşitli sanal ortamlarda farklı python sürümleriniz olduğunu varsayalım, o sanal ortamda kullanılan istenen python sürümü için tkinter kurmanız gerekecek. Örneğin sudo apt-get install python3.7-tk,. Bunu yapmamak No module named ' tkinter', genel python sürümü için yükledikten sonra bile hatalara yol açacaktır .


0

Bu, R retikülatıyla çalıştı. Buldum burada .

1: matplotlib.use( 'tkagg' ) veya 2: matplotlib$use( 'tkagg' )

Örneğin:

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()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.