Pycharm arsa göstermiyor


104

Pycharm, aşağıdaki kodun grafiğini göstermez:

import pandas as pd
import numpy as np
import matplotlib as plt

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))

ts = ts.cumsum()    
ts.plot()

Olan şey, bir pencerenin bir saniyeden daha kısa bir süre görünmesi ve ardından tekrar kaybolmasıdır.

Pyzo IEP IDE'yi kullanarak (aynı yorumlayıcıyı kullanarak) çizimin beklendiği gibi gösterdiği aynı kod üzerinde.

... Yani sorun Pycharm'da bir ayar ile ilgili olmalı. Hem python.exe hem de pythonw.exe'yi yorumlayıcı olarak aynı sonuçlarla kullanmayı denedim.

Bu benim sys_info'm:

C:\pyzo2014a\pythonw.exe -u C:\Program Files (x86)\JetBrains\PyCharm Community Edition 3.4.1\helpers\pydev\pydevconsole.py 57315 57316
PyDev console: using IPython 2.1.0import sys; print('Python %s on %s' % (sys.version, sys.platform))
Python 3.4.1 |Continuum Analytics, Inc.| (default, May 19 2014, 13:02:30) [MSC v.1600 64 bit (AMD64)] on win32
sys.path.extend(['C:\\Users\\Rasmus\\PycharmProjects\\untitled2'])
In[3]: import IPython
print(IPython.sys_info())
{'commit_hash': '681fd77',
 'commit_source': 'installation',
 'default_encoding': 'UTF-8',
 'ipython_path': 'C:\\pyzo2014a\\lib\\site-packages\\IPython',
 'ipython_version': '2.1.0',
 'os_name': 'nt',
 'platform': 'Windows-8-6.2.9200',
 'sys_executable': 'C:\\pyzo2014a\\pythonw.exe',
 'sys_platform': 'win32',
 'sys_version': '3.4.1 |Continuum Analytics, Inc.| (default, May 19 2014, '
                '13:02:30) [MSC v.1600 64 bit (AMD64)]'}

6
does plt.pyplot.show()işi?
Padraic Cunningham

1
O değil. Tam olarak 'plt.pyplot.show ()' çalıştırıldığında çalışmaz. 'Pyplot' yerine başka bir şey yazmalı mıyım? (çaylak burada).
Rasmus Larsen

kodu pycharm'da çalıştırdığınızda ne olur?
Padraic Cunningham

Dosyayı çalıştırdığımda aynı şey oluyor: bir pencere hızla beliriyor ve kayboluyor, konsol yazdırma: İşlem çıkış kodu 0 ile tamamlandı. Onu konsola gönderdiğimde pencere görünüyor ve kalıyor ama pencerede hiçbir şey çizilmiyor, sadece beyaz. Pencerenin etiketi "Şekil 1 (Yanıt Vermiyor)" şeklindedir
Rasmus Larsen

Görselleştirmek için matplotlib.pyplot eklemelisiniz.Referans: stackoverflow.com/a/29042575/4989929
Ronak

Yanıtlar:


105

Sadece kullan

plt.show()

Bu komut sisteme grafiği Pycharm'da çizmesini söyler.

Misal:

plt.imshow(img.reshape((28, 28)))
plt.show()

4
Gerçekten harika - bu benim için çalıştı ve diğerlerinin hiçbiri yapmadı. Şaşırtıcı olan, Jupyter Notebook'ta plt.show () 'a ihtiyacım yoktu, PyCharm'da davranışın neden farklı olduğunu bilmiyorum
Ambareesh

burada aynı. Ona Jupyter Defterinde ihtiyacım yoktu
pooria

Ben de onu aramayı hep unutuyorum. Bu, sisteme onu pycharm olarak çizmesini söyler. Dizüstü bilgisayar, varsayılan olarak otomatik olarak çizim ve yazdırma işlevlerini çağırır. Daha hızlı prototipleme için böyle yapıldığını düşünüyorum.
MNM

Daha plt.draw()sonra rakamı güncellediğim için kullanmam gerekirse ne olur ? plt.show()iyi çalışıyor, ancak plt.draw()PyCharm'da hiçbir şey göstermiyor.
CGFoX

1
Bunun gibi bir şey yaptığınız için not defterlerinde buna ihtiyacınız olmayabilir %matplotlib inline. @CGFox, draw, açıkça belleğe işlemek anlamına gelir, ancak ekranda (veya dosyada) görüntülenmez. Grafiklerin gösterilmesini sağlamak için plt.pause (0.1) yapmanız veya kodun başka bir noktasında bunları oluşturmaları için plt.show'u (pause = True)
çağırmanız

54

Bunun eski olduğunun farkındayım ama diğer gezginler için bir yanlış anlamayı ortadan kaldıracağımı düşündüm. Ayar plt.pyplot.isinteractive()için Falsearsa üzerindeki belirli komutlar çizilmiş olacağını araçlarının (yani çizmek için plt.pyplot.show()). Ayar plt.pyplot.isinteractive()için Trueher aracı pyplot( plt) komutu bir beraberlik komutu (yani tetikleyecek plt.pyplot.show()). Dolayısıyla, muhtemelen aradığınız şey plt.pyplot.show(), grafiği görüntülemek için programınızın sonunda.

Bir yan not olarak, import matplotlib.pyplot as pltyerine aşağıdaki içe aktarma komutunu kullanarak bu ifadeleri biraz kısaltabilirsiniz matplotlib as plt.


14
Plt.show'u (block = True) fonksiyonumun sonuna eklemek benim için işe yaradı. Açıklama için teşekkürler. (Python 3.x, PyCharm 2016.1.4, Ubuntu)
SummerEla

Benim için işe yarayan şey budur (Python 2.7, Pycharm 2016.3, Ubuntu 16.04): "matplotlib.pyplot'u plt olarak içe aktar", ardından "corr_data [col] .plot (kind =" bar ", figsize = (8, 5), grid = True, color = "r", title = col) "ve fonksiyondan ayrılmadan önce," plt.show () "
Taka

34

Ben de aynı sorunu yaşadım. plt.isinteractive()Doğru olup olmadığını kontrol edin . Bunu 'Yanlış' olarak ayarlamak bana yardımcı oldu.

plt.interactive(False)

9
Plt.show'u (block = True) çağırmak, grafiğin benim için bir kez gösterilmesine yardımcı oldu. Ancak, grafikler penceresini kapattıktan sonra bile konsol engellendi.
DanT

plt.interactive (False) benim için PyCharm'da yaptı
fantabolous

Artık Python kurulu değil, bu yüzden benim için işe yarayıp yaramayacağını bilmiyorum, ancak diğerleri için işe yarayacağı için bu cevabı kabul edeceğim (umarım bu, stackoverflow kurallarına göre doğrudur)
Rasmus Larsen

8
Doğru çözüm, @charlie'nin aşağıda önerdiği gibi plt.show'u (block = True) ayarlamaktır. Bu satırı ekledikten sonra, plt.interactive () bayrağının değerinin görüntülenen grafik üzerinde hiçbir etkisi yoktu.
donma

Bu benim için işe yaramadı `aralıktaki cluster_id için (len (tempx [0])): plt.plot (tempx, tempy, 'rx--', markersize = 8) plt.legend (loc = 4, framealpha = 0.5) plt.interactive (False) plt.show (block = True) ``
Mona Jalal

29

Farklı çözümler denedim ama sonunda benim için işe yarayan şey oldu plt.show(block=True). Bunun etkili olması için komuttan sonra bu komutu eklemeniz gerekir myDataFrame.plot(). Birden fazla grafiğiniz varsa, kodu kodunuzun sonuna ekleyin. Çizdiğiniz her veriyi görmenize izin verecektir.


2
Bu benim için yaptı. Kabul edilen cevap olmalı. () Plt.interactive Messing yaptığı şey
donma

Katılıyorum çünkü bu da bana yardımcı oldu. Etkileşimli modu Yanlış olarak ayarlamak ve ortam değişkenlerine "EKRAN = DOĞRU" eklemek yardımcı olmadı.
2017

22
import matplotlib
matplotlib.use('TkAgg')

Benim için çalışıyor. (PyCharm / OSX)


Bu, plt.show()PyCharm'ın (2020.1) daha yeni bir sürümünde artık yardımcı olmadığında Windows 10'da da benim için çalıştı .
Corbie

15

Pycharm sürümümde (Community Edition 2017.2.2) test ediyorum, hem plt.interactive (False) hem de plt.show'u (block = True) şu şekilde duyurmanız gerekebilir:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 6.28, 100)

plt.plot(x, x**0.5, label='square root')
plt.plot(x, np.sin(x), label='sinc')

plt.xlabel('x label')
plt.ylabel('y label')

plt.title("test plot")

plt.legend()

plt.show(block=True)
plt.interactive(False)

bunu duyduğuma üzüldüm. Pycharm 2017.3'te (topluluk sürümü) de işe yaradığını görüyorum. Pycharm'ın yeni bir sürümünü kullanmayı deneyebilir misiniz?
tairen

Merhaba Saria, bunun için üzgünüm. Ubuntu OS ile Pycharm 2018.1.2'de (topluluk sürümü) test ediyorum. O da çalışıyor.
tairen

Merhaba, MacOs Catalina ile Pycharm 2019.3 için çalışıyor
Milad nourizade

13

Bir çözüm buldum. Bu benim için çalıştı:

import numpy as np
import matplotlib.pyplot as plt

points = np.arange(-5, 5, 0.01)
dx, dy = np.meshgrid(points, points)
z = (np.sin(dx)+np.sin(dy))
plt.imshow(z)
plt.colorbar()
plt.title('plot for sin(x)+sin(y)')
plt.show()

Ama şimdi yeni bir sorunla karşı karşıyayım. Grafik yeni bir pencerede oluşturulduktan sonra, yeni açılan pencereyi kapatana kadar grafikten sonra eklediğim yeni kod çalışmıyor.
Semih

2
Soruda eksik olan önemli satır plt.show ()
Yoav

6

Aradıktan kısa süre sonra

plt.imshow() 

aramak

plt.show(block = True)

Resimle birlikte matplotlib açılır penceresini alacaksınız.

Bu bir engelleme yoludur. Pop kapanana kadar daha fazla komut dosyası çalışmayacaktır.


Aradığım buydu.
NelsonGon

5

Benimle ilgili sorun, matplotlib'in yanlış arka ucu kullanıyor olmasıydı. Debian Jessie kullanıyorum.

Bir konsolda şunları yaptım:

import matplotlib
matplotlib.get_backend()

Sonuç şuydu: "agg", bu "TkAgg" olmalıydı.

Çözüm basitti:

  1. Matplotlib'i pip aracılığıyla kaldırın
  2. Uygun kitaplıkları kurun: sudo apt-get install tcl-dev tk-dev python-tk python3-tk
  3. Matplotlib'i pip aracılığıyla tekrar kurun.

5

Sadece ekleyin plt.pyplot.show(), bu iyi olur.

En iyi çözüm SciView'ı devre dışı bırakmaktır.


4

Yukarıdakilerin hiçbiri benim için işe yaramadı ama aşağıdakiler işe yaradı:

  1. Pycharm'daki onay kutusunu (Araç penceresinde grafikleri göster) devre dışı bırakın settings > Tools > Python Scientific.

  2. Hatayı aldım No PyQt5 module found. PyQt5Kullanmanın kurulumuyla devam etti :

    sudo apt-get install python3-pyqt5
    

Sadece ilk adımın yeterli olduğuna ve işe yaradığına dikkat edin.


1
Benim için işe yaradığından, ilk adımın hala çözüm olabileceğini lütfen daha net hale getirin. Böyle ifade edilirse, @ amir1122'nin diğer tekrar eden cevabının var olma hakkı vardır. Tabii ki de sorun değil ve hala benim oyumu alıyorsun.
Lorenz

1
@Lorenz. Mantıklı olan önerinize göre güncellendi.
AbdulRehmanLiaqat

Adım 1 işe yarıyor, ancak geçici bir çözüm gibi görünüyor. Benim durumumda, etrafta dolaşan birden fazla Python sürümüne (3.6, 3.7 ve 3.8) sahip olduğumdan şüpheleniyorum.
Josiah Yoder

3

PyCharm 2017.1.2'deki sürümümde test ettim. Etkileşimli (Doğru) ve göster (blok = Doğru) kullandım.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1//2000',periods=1000))
ts = ts.cumsum()
plt.interactive(True)
ts.plot()
plt.show(block=True)

2

Ortamım: macOS ve anaconda3

Bu benim için çalışıyor:

matplotlib.use('macosx')

veya etkileşimli mod:

matplotlib.use('TkAgg')

Matplotlib.pyplot içe aktarmadan önce bunu ekleyin
Zoe L

2

bu sorunu yaşadım ve çözebilirim, kendi yöntemimi test edebilirsiniz .. "araç penceresinde çizimleri göster" ayarını -> araçlar -> python bilimsel


1
Bu cevap zaten iki yıl önce verilmişti (örneğin, stackoverflow.com/a/52221178/466862 ). Eski soruları yanıtlarken, ya yeni, farklı bir çözüme ya da önemli ölçüde daha iyi bir açıklamaya cevap verdiğinizden emin olun.
Mark Rotteveel

Bu @ AbdulRehmanLiaqat'ın cevabını tekrarlıyor, ancak en azından bunun olası bir çözüm olabileceğini açıkça belirtiyor. Bunu tekrar yüzünden ilk önce olumsuz oy verdim. Şimdi, basitçe diğer cevap buradaki tek adımın zaten çözebileceğini açıkça belirtmediği için, daha sonra benim durumumda görünmeyen bir hatadan bahsediyor.
Lorenz

1

DanT'den gelen yorum bunu benim için düzeltti, matplotlib, GTKagg arka uç ile linux üzerinde pycharm ile. Matplotlib'i içe aktarırken aşağıdaki hatayı alıyorum:

>>> import matplotlib as mpl

Backend GTKAgg is interactive backend. Turning interactive mode on.
Failed to enable GUI event loop integration for 'gtk'

Böyle bir şeyi çizerken:

from matplotlib import pyplot as plt
plt.figure()
plt.plot(1,2)
plt.show()

Bir şekil ekranı açılır, ancak hiçbir çizelge görünmez. kullanma:

plt.show(block=True)

grafiği doğru şekilde görüntüler.


1

Benim durumumda şunları yapmak istedim:

    plt.bar(range(len(predictors)), scores)
    plt.xticks(range(len(predictors)), predictors, rotation='vertical')
    plt.show()

Buradaki çözümlerin bir karışımını takiben, benim çözümüm bundan önce aşağıdaki komutları eklemekti:

    matplotlib.get_backend()
    plt.interactive(False)
    plt.figure()

aşağıdaki iki ithalatla

   import matplotlib
   import matplotlib.pyplot as plt

ElCapitan ve PyCharm 2016.2.3 ile bir MBP ile benim durumumda tüm komutlar gerekli görünüyor. Selamlar!



1

Etkileşimli olmayan ortamda plt.show kullanmalıyız (block = True)


1

Bir IDE içinde bir komut dosyası çalıştıranlar için (ve bir python konsolu veya bir dizüstü bilgisayar gibi etkileşimli bir ortamda çalışmayanlar için), bunu en sezgisel ve en basit çözüm buldum:

plt.imshow(img)
plt.waitforbuttonpress()

Şekli gösterir ve kullanıcı yeni pencereye tıklayana kadar bekler. Ancak o zaman betiği devam ettirir ve kodun geri kalanını çalıştırır.


1

Burada benim için çalışan diğer önerilerden bazılarının bir kombinasyonunu elde edebildim, ancak yalnızca plt.interactive(False)ileri Trueve geri geçiş yaparken .

plt.interactive(True)
plt.pyplot.show()

Bu arsalarımı parlatacak. Ardından Falseizlemeye izin verilecek şekilde ayarlandı .

plt.interactive(False)
plt.pyplot.show()

Ayrıca belirtildiği gibi, programım tüm pencereler kapanana kadar çıkmayacaktı. Mevcut çalışma ortamımla ilgili bazı ayrıntılar:

Python version 2.7.6
Anaconda 1.9.2 (x86_64)
(default, Jan 10 2014, 11:23:15) 
[GCC 4.0.1 (Apple Inc. build 5493)]
Pandas version: 0.13.1

0

Pycharm için bir özellik ayarlanmalıdır.

import matplotlib.pyplot as plt

plt.interactive(False)  #need to set to False

dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)

plt.show()

0

İçe aktarmayı şu şekilde değiştirin:

import matplotlib.pyplot as plt

veya bu satırı kullanın:

plt.pyplot.show()

0

Ubuntu kullanıyorum ve @Arie'nin yukarıda söylediği gibi denedim, ancak bu satırla yalnızca terminalde:

sudo apt-get install tcl-dev tk-dev python-tk python3-tk

Ve işe yaradı!


0

Pycharm'da, bazen Matplotlib.plot görünmez.

Bu yüzden plt.show(), SciView için sağ taraftaki araç çubuğunda check çağırdıktan sonra . SciView içinde oluşturulan her grafik saklanacaktır.


0

Histogramı çizmeye çalışırken yukarıdaki hatayla karşılaşıyordum ve aşağıdaki noktalar benim için çalıştı.

İşletim Sistemi: Mac Catalina 10.15.5

Pycharm Sürümü: Topluluk sürümü 2019.2.3

Python sürümü: 3.7

  1. Import ifadesini aşağıdaki gibi değiştirdim (- dan)

from:

import matplotlib.pylab as plt

to:

import matplotlib.pyplot as plt

  1. ve plot ifadesini aşağıya (komut formum pyplot'u plt olarak değiştirdi)

from:

plt.pyplot.hist(df["horsepower"])

# set x/y labels and plot title
plt.pyplot.xlabel("horsepower")
plt.pyplot.ylabel("count")
plt.pyplot.title("horsepower bins") 

to:

plt.hist(df["horsepower"])

# set x/y labels and plot title
plt.xlabel("horsepower")
plt.ylabel("count")
plt.title("horsepower bins")
  1. histogramı görüntülemek için plt.show kullanın

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.