Pycharm이 플롯을 표시하지 않습니다.


100

Pycharm은 다음 코드의 플롯을 표시하지 않습니다.

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()

무슨 일이 일어나고 있는지 창이 1 초 미만 동안 나타났다가 다시 사라집니다.

동일한 코드에서 Pyzo IEP IDE (동일한 인터프리터 사용)를 사용하면 플롯이 예상대로 표시됩니다.

... 따라서 문제는 Pycharm의 일부 설정에 있어야합니다. python.exe와 pythonw.exe를 모두 동일한 결과로 인터프리터로 사용해 보았습니다.

이것은 내 sys_info입니다.

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
않는 plt.pyplot.show()일을?
Padraic Cunningham

1
그렇지 않습니다. 정확히 'plt.pyplot.show ()'를 실행하면 작동하지 않습니다. 'pyplot'대신 다른 것을 작성해야합니까? (여기 멍청이).
Rasmus Larsen

pycharm에서 코드를 실행하면 어떻게됩니까?
Padraic Cunningham 2014

파일을 실행할 때 똑같은 일이 발생합니다. 창이 빠르게 나타나고 사라집니다. 콘솔 인쇄 : 프로세스가 종료 코드 0으로 완료되었습니다. 콘솔로 보내면 창이 나타나고 유지되지만 창에 아무것도 그려지지 않습니다. 흰색입니다. 윈도우의 레이블은 "그림 1 (응답 없음)"입니다
라스무스 라슨

이를 시각화하려면 matplotlib.pyplot을 추가해야합니다. 참조 : stackoverflow.com/a/29042575/4989929
Ronak Poriya 2016 년

답변:


103

그냥 사용

plt.show()

이 명령은 Pycharm에서 플롯을 그리도록 시스템에 지시합니다.

예:

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

4
정말 놀랍습니다. 이것은 저에게 효과가 있었으며 다른 사람들 중 누구도 그렇지 않았습니다. 무엇 놀라운 것은 내가 Jupyter 노트북에서 plt.show ()를 필요로하지 않았다이다, 몰라 왜 동작은 PyCharm에 다른
앰바 리쉬

여기도 마찬가지입니다. Jupyter 노트북에서 필요하지 않았습니다
pooria 19

나는 항상 그것을 부르는 것을 잊는다. 이것은 시스템이 실제로 pycharm에서 그것을 그리도록 지시합니다. 노트북은 기본적으로 그리기 및 인쇄 기능을 자동으로 호출합니다. 더 빠른 프로토 타이핑을 위해 그렇게 만들어 졌다고 생각합니다.
MNM

plt.draw()나중에 그림을 업데이트 하기 때문에 사용해야 하는 경우 어떻게합니까? plt.show()잘 작동하지만 plt.draw()PyCharm에 아무것도 표시되지 않습니다.
CGFoX

1
이런 일을했기 때문에 노트북에 필요하지 않을 수도 있습니다 %matplotlib inline. @CGFox, draw는 명시 적으로 메모리에 렌더링하지만 화면 (또는 파일)에는 표시하지 않음을 의미합니다. 플롯을 표시하려면 plt.pause (0.1)를 사용하거나 코드의 다른 지점에서 plt.show (pause = True)를 호출하여 렌더링해야합니다
xaviersjs

54

나는 이것이 오래되었다는 것을 알고 있지만 다른 여행자에 대한 오해를 해소 할 것이라고 생각했습니다. 로 설정 plt.pyplot.isinteractive()하면 False그릴 특정 명령 (예 :)에 플롯이 그려집니다 plt.pyplot.show(). 로 설정 plt.pyplot.isinteractive()하면 True모든 pyplot( plt) 명령이 그리기 명령 (예 :)을 트리거합니다 plt.pyplot.show(). 그래서 당신이 찾던 것보다 더 많은 것은 당신 plt.pyplot.show()의 프로그램 끝에 그래프를 표시하는 것입니다.

참고로 . import matplotlib.pyplot as plt대신 다음 가져 오기 명령을 사용하여 이러한 명령문을 약간 줄일 수 있습니다 matplotlib as plt.


14
내 함수 끝에 plt.show (block = True)를 추가하는 것이 저에게 효과적이었습니다. 명확하게 해 주셔서 감사합니다. (Python 3.x, PyCharm 2016.1.4, Ubuntu)
SummerEla

이것이 저에게 맞는 것입니다 (Python 2.7, Pycharm 2016.3, Ubuntu 16.04) : "import matplotlib.pyplot as plt", 그런 다음 "corr_data [col] .plot (kind ="bar ", figsize =)와 같이 DataFrame의 함수 플롯 (8, 5), grid = True, color = "r", title = col) "및 함수를 떠나기 전에"plt.show () "
Taka

34

나는 같은 문제가 있었다. plt.isinteractive()사실인지 확인하십시오 . 'False'로 설정하면 도움이되었습니다.

plt.interactive(False)

9
plt.show (block = True)를 호출하면 차트를 한 번만 볼 수 있습니다. 그러나 차트 창을 닫은 후에도 콘솔이 차단되었습니다.
DanT 2015 년

(거짓) plt.interactive는 PyCharm에 나를 위해 그것을 한
fantabolous

나는 더 이상 Python을 설치하지 않았기 때문에 그것이 저에게 효과가 있을지 모르겠지만 다른 사람들에게도 효과가 있기 때문에이 대답을 받아 들일 것입니다 (stackoverflow-rules에 따라 이것이 맞기를 바랍니다)
Rasmus Larsen

8
올바른 해결책은 @charlie가 아래에 제안한대로 plt.show (block = True)를 설정하는 것입니다. 이 줄을 추가 한 후 plt.interactive () 플래그의 값은 표시되는 플롯과 관련이 없습니다.
동상

이것은 나를 위해 작동하지 않았다`for cluster_id in range (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

나는 다른 해결책을 시도했지만 마침내 나를 위해 일한 것은 plt.show(block=True). 이 명령을 적용하려면 myDataFrame.plot()명령 뒤에이 명령을 추가해야합니다 . 플롯이 여러 개인 경우 코드 끝에 명령을 추가하십시오. 플로팅하는 모든 데이터를 볼 수 있습니다.


2
이것은 나를 위해 해냈습니다. 받아 들여진 대답이어야합니다. ()을 plt.interactive 덤비는 것은하지 않았다 아무것도
동상

저도 도움이 되었기 때문에 동의합니다. 대화 형 모드를 False로 설정하고 환경 변수에 "DISPLAY = TRUE"를 추가해도 도움이되지 않았습니다.
Fábio

22
import matplotlib
matplotlib.use('TkAgg')

나를 위해 작동합니다. (PyCharm / OSX)


이것은 plt.show()PyCharm (2020.1)의 최신 버전에서 더 이상 도움이되지 않았을 때 Windows 10에서도 저에게 효과적이었습니다.
Corbie

14

내 버전의 Pycharm (커뮤니티 에디션 2017.2.2)에서 테스트합니다. 다음과 같이 plt.interactive (False) 및 plt.show (block = True)를 모두 발표해야 할 수도 있습니다.

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)

유감입니다. Pycharm 2017.3 (커뮤니티 에디션)에서도 작동합니다. Pycharm의 새 버전을 사용해 보시겠습니까?
tairen

안녕, 사 리아. 죄송합니다. Ubuntu OS를 사용하여 Pycharm 2018.1.2 (커뮤니티 에디션)에서 테스트합니다. 그것도 작동합니다.
tairen

안녕하세요, MacOs Catalina와 함께 Pycharm 2019.3에서 작동합니다
Milad nourizade

13

해결책을 찾았습니다. 이것은 나를 위해 일했습니다.

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()

그러나 나는 이제 새로운 문제에 직면하고 있습니다. 새 창에서 플롯이 생성되면 새로 열린 창을 닫을 때까지 플롯 후에 추가 한 새 코드가 실행되지 않습니다.
Dhruv 2015

2
질문에서 빠진 중요한 줄은 plt.show ()
Yoav

6

전화 후 곧

plt.imshow() 

요구

plt.show(block = True)

이미지와 함께 matplotlib 팝업이 표시됩니다.

이것은 차단 방법입니다. 팝이 닫힐 때까지 추가 스크립트가 실행되지 않습니다.


이것이 제가 찾던 것입니다.
NelsonGon

5

나에게 문제는 matplotlib가 잘못된 백엔드를 사용하고 있다는 사실이었습니다. Debian Jessie를 사용하고 있습니다.

콘솔에서 다음을 수행했습니다.

import matplotlib
matplotlib.get_backend()

결과는 'agg'였지만 'TkAgg'이어야합니다.

해결책은 간단했습니다.

  1. pip를 통해 matplotlib 제거
  2. 적절한 라이브러리를 설치하십시오 : sudo apt-get install tcl-dev tk-dev python-tk python3-tk
  3. pip를 통해 matplotlib를 다시 설치하십시오.

5

그냥 추가 plt.pyplot.show()하면 괜찮을 것입니다.

가장 좋은 해결책은 SciView를 비활성화하는 것입니다.


4

PyCharm 2017.1.2에서 내 버전을 테스트했습니다. 인터랙티브 (True)와 쇼 (block = True)를 사용했습니다.

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)

4

위의 어느 것도 나를 위해 일하지 않았지만 다음은 작동했습니다.

  1. pycharm에서 확인란 (도구 창에 플롯 표시)을 비활성화 settings > Tools > Python Scientific합니다.

  2. 오류가 발생했습니다 No PyQt5 module found. 다음을 PyQt5사용하여 설치를 진행했습니다 .

    sudo apt-get install python3-pyqt5

일부의 경우 첫 번째 단계만으로 충분하고 작동합니다.


1
저에게 효과가 있었으므로 첫 번째 단계가 여전히 해결책이 될 수 있음을 분명히하십시오. 이렇게 말하면 @ amir1122의 다른 반복되는 답변은 존재할 권리가 있습니다. 물론 괜찮습니다. 당신은 여전히 ​​내 찬성표를 얻었습니다.
Lorenz

1
@Lorenz. 귀하의 제안에 따라 업데이트되었습니다.
AbdulRehmanLiaqat

1 단계는 작동하지만 해결 방법처럼 느껴집니다. 제 경우에는 여러 버전의 Python (3.6, 3.7 및 3.8)이 떠 다니기 때문이라고 생각합니다.
Josiah Yoder

2

내 환경 : macOS 및 anaconda3

이것은 나를 위해 작동합니다.

matplotlib.use('macosx')

또는 대화 형 모드 :

matplotlib.use('TkAgg')

matplotlib.pyplot을 가져 오기 전에 이것을 추가하십시오
Zoe L

2

나는이 문제가 있었고 그것을 해결할 수 있었다, 당신은 내 방식을 테스트 할 수 있습니다 .. 설정에서 "도구 창에 플롯 표시"를 비활성화-> 도구-> 파이썬 과학


1
이 답변은 이미 2 년 전에 제공되었습니다 (예 : stackoverflow.com/a/52221178/466862 ). 이전 질문에 답할 때는 새롭고 다른 해결책이나 훨씬 더 나은 설명에 답해야합니다.
Mark Rotteveel

이것은 @AbdulRehmanLiaqat의 대답을 반복하지만 적어도 이것이 가능한 해결책이 될 수 있음을 분명히 나타냅니다. 나는 반복 때문에 이것을 먼저 반대표를 던졌습니다. 이제 나는 다른 답변이 여기에있는이 단일 단계가 이미 해결할 수 있음을 명확하게 명시하지 않았기 때문에 대신 내 경우에 나타나지 않은 오류를 나중에 언급합니다.
Lorenz

1

DanT의 의견은 GTKagg 백엔드를 사용하는 Linux에서 pycharm을 사용하여 matplotlib를 수정했습니다. matplotlib를 가져올 때 다음 오류가 발생합니다.

>>> import matplotlib as mpl

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

다음과 같이 플로팅 할 때 :

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

그림 화면이 나타나지만 차트는 나타나지 않습니다. 사용 :

plt.show(block=True)

그래픽을 올바르게 표시합니다.


1

제 경우에는 다음을 수행하고 싶었습니다.

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

여기에 솔루션을 혼합 한 후 내 솔루션은 그 전에 다음 명령을 추가하는 것이 었습니다.

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

다음 두 가지 수입품

   import matplotlib
   import matplotlib.pyplot as plt

ElCapitan 및 PyCharm 2016.2.3을 사용하는 MBP와 함께 내 경우에는 모든 명령이 필요한 것 같습니다. 인사말!



1

비대화 형 환경에서는 plt.show (block = True)를 사용해야합니다.


1

IDE 내에서 스크립트를 실행하고 파이썬 콘솔이나 노트북과 같은 대화 형 환경에서 작동하지 않는 사람들에게는 이것이 가장 직관적이고 가장 간단한 솔루션이라는 것을 알았습니다.

plt.imshow(img)
plt.waitforbuttonpress()

그림을 보여주고 사용자가 새 창을 클릭 할 때까지 기다립니다. 그런 다음 스크립트를 다시 시작하고 나머지 코드를 실행합니다.


1

나를 위해 일하는 여기에 다른 제안의 일부의 조합을 얻을 수 있었다, 그러나 토글 동안에 만 plt.interactive(False)True다시와.

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

이것은 내 플롯을 깜박입니다. 그런 다음 False보기 허용으로 설정합니다 .

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

언급했듯이 내 프로그램은 모든 창이 닫힐 때까지 종료되지 않습니다. 현재 실행 환경에 대한 몇 가지 세부 정보는 다음과 같습니다.

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에 대해 하나의 속성을 설정해야합니다.

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

가져 오기를 다음으로 변경 :

import matplotlib.pyplot as plt

또는 다음 줄을 사용하십시오.

plt.pyplot.show()

0

나는 Ubuntu를 사용하고 있으며 @Arie가 위에서 말한 것처럼 시도했지만 터미널에서만이 줄을 사용했습니다.

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

그리고 작동했습니다!


0

Pycharm에서는 때때로 Matplotlib.plot이 표시되지 않습니다.

따라서 plt.show()SciView의 오른쪽 도구 모음에서 check를 호출 한 후 . SciView에는 생성 된 모든 플롯이 저장됩니다.


0

나는 히스토그램을 플롯하려고 할 때 위의 오류에 직면했고 아래 포인트가 나를 위해 일했습니다.

운영체제 : Mac Catalina 10.15.5

Pycharm 버전 : 커뮤니티 버전 2019.2.3

Python 버전 : 3.7

  1. 다음과 같이 수입 명세서를 변경했습니다 (-에서)

에서 :

import matplotlib.pylab as plt

에:

import matplotlib.pyplot as plt

  1. 그리고 아래에 플롯 진술 (내 명령 양식 pyplot을 plt로 변경)

에서:

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") 

받는 사람 :

plt.hist(df["horsepower"])

# set x/y labels and plot title
plt.xlabel("horsepower")
plt.ylabel("count")
plt.title("horsepower bins")
  1. plt.show를 사용하여 히스토그램 표시

plt.show()

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.