Pycharm không hiển thị cốt truyện


100

Pycharm không hiển thị âm mưu từ mã sau:

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

Điều gì xảy ra là một cửa sổ xuất hiện trong chưa đầy một giây, rồi lại biến mất.

Sử dụng Pyzo IEP IDE (sử dụng cùng một trình thông dịch) trên cùng một mã mà biểu đồ hiển thị như mong đợi.

... Vì vậy, vấn đề phải là với một số cài đặt trên Pycharm. Tôi đã thử sử dụng cả python.exe và pythonw.exe làm trình thông dịch, cả hai đều có kết quả giống nhau.

Đây là sys_info của tôi:

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
không plt.pyplot.show()hoạt động?
Padraic Cunningham

1
Nó không. Khi chạy chính xác 'plt.pyplot.show ()' nó không hoạt động. Tôi có nên viết cái gì khác thay vì 'pyplot' không? (noob đây).
Rasmus Larsen,

điều gì xảy ra khi bạn chạy mã trong pycharm?
Padraic Cunningham

Khi tôi chạy tệp đó, điều tương tự cũng xảy ra: một cửa sổ nhanh chóng xuất hiện và biến mất, bảng điều khiển in: Quá trình hoàn tất với mã thoát 0. Khi tôi gửi tệp đó đến bảng điều khiển, cửa sổ xuất hiện và ở lại nhưng không có gì được vẽ trong cửa sổ, nó chỉ là màu trắng. Nhãn của cửa sổ là "Hình 1 (Not Responding)"
Rasmus Larsen

Bạn nên thêm matplotlib.pyplot để visulize it.Refer: stackoverflow.com/a/29042575/4989929
Ronak Poriya

Câu trả lời:


103

Chỉ dùng

plt.show()

Lệnh này yêu cầu hệ thống vẽ sơ đồ trong Pycharm.

Thí dụ:

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

4
Nó thực sự tuyệt vời - điều này hiệu quả với tôi, và không ai trong số những người khác làm được. Chuyện gì đang ngạc nhiên là, tôi không cần plt.show () trong Jupyter Máy tính xách tay, dunno tại sao hành vi này là khác nhau trong PyCharm
Ambareesh

ở đây cũng vậy. Tôi không cần nó trong Máy tính xách tay Jupyter
pooria

Tôi luôn quên gọi như vậy. Điều này cho hệ thống thực sự vẽ nó trong pycharm. Notebook sẽ tự động gọi các chức năng vẽ và in theo mặc định. Tôi nghĩ nó được làm như vậy để tạo mẫu nhanh hơn.
MNM

Điều gì sẽ xảy ra nếu tôi cần sử dụng plt.draw()vì tôi đang cập nhật hình sau này? plt.show()hoạt động tốt, nhưng plt.draw()không hiển thị bất kỳ điều gì trong PyCharm.
CGFoX

1
Có thể là bạn không cần nó trong sổ ghi chép vì bạn đã làm một cái gì đó như thế này %matplotlib inline. @CGFox, draw được hiểu rõ ràng là hiển thị vào bộ nhớ nhưng không hiển thị ra màn hình (hoặc tệp). Bạn cần phải plt.pause (0,1) để hiển thị các âm mưu hoặc gọi plt.show (pause = True) tại một số điểm khác trong mã để khiến chúng hiển thị
xaviersjs

54

Tôi nhận ra điều này đã cũ nhưng tôi nghĩ rằng tôi sẽ xóa bỏ một quan niệm sai lầm cho những du khách khác. Đặt plt.pyplot.isinteractive()thành Falsecó nghĩa là âm mưu sẽ được vẽ trên các lệnh cụ thể để vẽ (tức là plt.pyplot.show()). Đặt plt.pyplot.isinteractive()thành Truecó nghĩa là mọi lệnh pyplot( plt) sẽ kích hoạt lệnh vẽ (tức là plt.pyplot.show()). Vì vậy, những gì bạn có nhiều khả năng tìm kiếm là plt.pyplot.show()ở cuối chương trình của bạn để hiển thị biểu đồ.

Ngoài ra, bạn có thể rút ngắn các câu lệnh này một chút bằng cách sử dụng lệnh nhập sau import matplotlib.pyplot as pltthay vì sử dụng matplotlib as plt.


14
Thêm plt.show (khối = True) vào cuối hàm của tôi là những gì hiệu quả với tôi. Cảm ơn bạn đã làm rõ. (Python 3.x, PyCharm 2016.1.4, Ubuntu)
SummerEla

Đây là những gì phù hợp với tôi (Python 2.7, Pycharm 2016.3, Ubuntu 16.04): "import matplotlib.pyplot as plt", sau đó biểu đồ hàm từ DataFrame như trong "corr_data [col] .plot (kind =" bar ", figsize = (8, 5), grid = True, color = "r", title = col)" và trước khi rời khỏi chức năng, "plt.show ()"
Taka

34

Tôi đã từng gặp vấn đề tương tự. Kiểm tra ướt plt.isinteractive()là Đúng. Đặt nó thành 'False' đã giúp ích cho tôi.

plt.interactive(False)

9
Gọi plt.show (block = True) đã giúp tôi hiển thị biểu đồ một lần. Nhưng bảng điều khiển đã bị chặn ngay cả sau khi đóng cửa sổ biểu đồ.
DanT

plt.interactive (Sai) đã làm điều đó cho tôi trong PyCharm
fantabolous

Tôi không cài đặt Python nữa, vì vậy tôi không biết liệu nó có phù hợp với tôi hay không, nhưng vì nó hoạt động với những người khác, tôi sẽ chấp nhận câu trả lời này (tôi hy vọng điều này đúng theo quy tắc stackoverflow)
Rasmus Larsen

8
Giải pháp chính xác là đặt plt.show (block = True) như @charlie đã đề xuất bên dưới. Sau khi bạn thêm dòng này, giá trị của cờ plt.interactive () không liên quan đến âm mưu đang được hiển thị.
tê cóng

Điều này không hiệu quả với tôi `cho cluster_id trong range (len (tempx [0])): plt.plot (tempx, tempy, 'rx--', markersize = 8) plt.legend (loc = 4, framealpha = 0.5) plt.interactive (False) plt.show (khối = True) `
Mona Jalal

29

Tôi đã thử các giải pháp khác nhau nhưng cuối cùng điều gì đã hiệu quả với tôi plt.show(block=True). Bạn cần thêm lệnh này sau myDataFrame.plot()lệnh để lệnh này có hiệu lực. Nếu bạn có nhiều ô, chỉ cần thêm lệnh vào cuối mã của bạn. Nó sẽ cho phép bạn xem mọi dữ liệu bạn đang vẽ.


2
Điều này đã làm điều đó cho tôi. Nên là câu trả lời được chấp nhận. Lộn xộn với plt.interactive () không làm gì cả
tê cóng

Tôi đồng ý vì điều này cũng giúp tôi. Đặt chế độ tương tác thành Sai và thêm "DISPLAY = TRUE" vào các biến môi trường không giúp được gì.
Fábio,

22
import matplotlib
matplotlib.use('TkAgg')

Làm việc cho tôi. (PyCharm / OSX)


Điều này cũng đã hoạt động với tôi trên Windows 10 khi plt.show()không giúp được gì thêm trong phiên bản mới hơn của PyCharm (2020.1).
Corbie

14

Tôi thử nghiệm trong phiên bản Pycharm của mình (Phiên bản cộng đồng 2017.2.2), bạn có thể cần phải thông báo cả plt.interactive (False) và plt.show (khối = True) như sau:

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)

rất tiếc khi biết điều đó. Tôi thấy nó cũng hoạt động trong Pycharm 2017.3 (phiên bản cộng đồng). Bạn có thể thử sử dụng phiên bản mới của Pycharm không?
tairen

Xin chào, Saria, xin lỗi vì điều đó. Tôi thử nghiệm nó trong Pycharm 2018.1.2 (phiên bản cộng đồng) với Hệ điều hành Ubuntu. Nó cũng hoạt động.
tairen

Xin chào, nó hoạt động cho Pycharm 2019.3 với MacOs Catalina
Milad nourizade

13

Tôi đã tìm ra một giải pháp. Điều này đã làm việc cho tôi:

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

Nhưng tôi đang phải đối mặt với một vấn đề mới. Khi cốt truyện được tạo trong một cửa sổ mới, mã mới mà tôi đã thêm vào sau khi cốt truyện không chạy, cho đến khi tôi đóng cửa sổ mới mở.
Dhruv

2
Dòng quan trọng bị thiếu trong câu hỏi là plt.show ()
Yoav

6

Ngay sau khi gọi

plt.imshow() 

gọi

plt.show(block = True)

Bạn sẽ nhận được cửa sổ bật lên matplotlib với hình ảnh.

Đây là một cách ngăn chặn. Tập lệnh khác sẽ không chạy cho đến khi cửa sổ bật lên đóng lại.


Đây là những gì tôi đang tìm kiếm.
NelsonGon

5

Với tôi, vấn đề là thực tế là matplotlib đã sử dụng phần phụ trợ sai. Tôi đang sử dụng Debian Jessie.

Trong bảng điều khiển, tôi đã làm như sau:

import matplotlib
matplotlib.get_backend()

Kết quả là: 'agg', trong khi giá trị này phải là 'TkAgg'.

Giải pháp rất đơn giản:

  1. Gỡ cài đặt matplotlib qua pip
  2. Cài đặt các thư viện thích hợp: sudo apt-get install tcl-dev tk-dev python-tk python3-tk
  3. Cài đặt lại matplotlib qua pip.

5

Chỉ cần thêm vào plt.pyplot.show(), điều đó sẽ ổn.

Giải pháp tốt nhất là tắt SciView.


4

Tôi đã thử nghiệm trong phiên bản của mình trên PyCharm 2017.1.2. Tôi đã sử dụng tương tác (Đúng) và hiển thị (khối = Đúng).

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

Không có cách nào ở trên phù hợp với tôi nhưng cách sau đã làm:

  1. Tắt hộp kiểm (Hiển thị các ô trong cửa sổ công cụ) trong pycharm settings > Tools > Python Scientific.

  2. Tôi đã nhận lỗi No PyQt5 module found. Đi trước với việc cài đặt PyQt5sử dụng:

    sudo apt-get install python3-pyqt5

Hãy lưu ý rằng chỉ một số bước đầu tiên là đủ và hoạt động.


1
Vui lòng nói rõ rằng bước đầu tiên vẫn có thể là giải pháp, vì nó đã hiệu quả với tôi. Được nêu như thế này, câu trả lời lặp lại khác của @ amir1122 có quyền tồn tại. Tất nhiên là OK, và bạn vẫn nhận được sự ủng hộ của tôi.
Lorenz

1
@Lorenz. Cập nhật theo đề xuất của bạn mà có ý nghĩa.
AbdulRehmanLiaqat

Bước 1 hoạt động, nhưng giống như một giải pháp thay thế. Trong trường hợp của mình, tôi nghi ngờ rằng đó là do tôi có nhiều phiên bản Python (3.6, 3.7 và 3.8) trôi nổi.
Josiah Yoder

2

Env của tôi: macOS & anaconda3

Điều này phù hợp với tôi:

matplotlib.use('macosx')

hoặc chế độ tương tác:

matplotlib.use('TkAgg')

Thêm cái này trước khi nhập matplotlib.pyplot
Zoe L

2

tôi đã gặp vấn đề này và tôi có thể giải quyết nó, bạn có thể kiểm tra theo cách của tôi .. vô hiệu hóa "hiển thị các ô trong cửa sổ công cụ" khỏi cài đặt -> công cụ -> python khoa học


1
Câu trả lời này đã được cung cấp hai năm trước (ví dụ: trong stackoverflow.com/a/52221178/466862 ). Khi trả lời các câu hỏi cũ hơn, hãy đảm bảo bạn trả lời một giải pháp mới, khác hoặc một lời giải thích tốt hơn đáng kể.
Đánh dấu Rotteveel

Điều này đang lặp lại câu trả lời của @ AbdulRehmanLiaqat, nhưng ít nhất nó cũng nói rõ rằng đây có thể là một giải pháp khả thi. Đầu tiên tôi đã phản đối điều này vì sự lặp lại. Bây giờ tôi đã ủng hộ, đơn giản vì câu trả lời khác không nói rõ rằng bước đơn này ở đây đã có thể giải quyết nó, thay vào đó nó đề cập đến một lỗi sau đó không xuất hiện trong trường hợp của tôi.
Lorenz

1

Nhận xét từ DanT đã sửa lỗi này cho tôi, matplotlib với pycharm trên linux với phần phụ trợ GTKagg. Khi nhập matplotlib, tôi sẽ gặp lỗi sau:

>>> import matplotlib as mpl

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

Khi âm mưu một cái gì đó như vậy:

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

Một màn hình hình sẽ bật lên nhưng không có biểu đồ nào xuất hiện. sử dụng:

plt.show(block=True)

hiển thị hình ảnh một cách chính xác.


1

Trong trường hợp của tôi, tôi muốn làm như sau:

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

Sau khi kết hợp các giải pháp ở đây, giải pháp của tôi là thêm trước đó các lệnh sau:

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

với hai lần nhập khẩu sau

   import matplotlib
   import matplotlib.pyplot as plt

Có vẻ như tất cả các lệnh đều cần thiết trong trường hợp của tôi, với MBP với ElCapitan và PyCharm 2016.2.3. Lời chào hỏi!



1

Trong env không tương tác, chúng ta phải sử dụng plt.show (block = True)


1

Đối với những người đang chạy tập lệnh bên trong IDE (và không làm việc trong môi trường tương tác như bảng điều khiển python hoặc sổ ghi chép), tôi thấy đây là giải pháp trực quan nhất và đơn giản nhất:

plt.imshow(img)
plt.waitforbuttonpress()

Nó hiển thị hình và đợi cho đến khi người dùng nhấp vào cửa sổ mới. Chỉ sau đó nó tiếp tục tập lệnh và chạy phần còn lại của mã.


1

Tôi đã có thể để có được một sự kết hợp của một số những gợi ý khác ở đây làm việc cho tôi, nhưng chỉ khi Toggling plt.interactive(False)đến Truevà ngược lại.

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

Điều này sẽ làm sáng tỏ các âm mưu của tôi. Sau đó đặt thành Falseđược phép xem.

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

Như đã lưu ý, chương trình của tôi sẽ không thoát cho đến khi tất cả các cửa sổ được đóng lại. Dưới đây là một số chi tiết về môi trường chạy hiện tại của tôi:

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

Một thuộc tính cần phải đặt cho 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

Thay đổi nhập thành:

import matplotlib.pyplot as plt

hoặc sử dụng dòng này:

plt.pyplot.show()

0

Tôi đang sử dụng Ubuntu và tôi đã thử như @Arie đã nói ở trên nhưng chỉ với dòng này trong terminal:

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

Va no đa hoạt động!


0

Trong Pycharm, đôi khi Matplotlib.plot sẽ không hiển thị.

Vì vậy, sau khi gọi, plt.show()hãy kiểm tra trong thanh công cụ bên phải của SciView. Bên trong SciView, mọi ô được tạo sẽ được lưu trữ.


0

Tôi đã gặp phải lỗi trên khi tôi đang cố gắng vẽ biểu đồ và các điểm dưới đây phù hợp với tôi.

Hệ điều hành: Mac Catalina 10.15.5

Phiên bản Pycharm: Phiên bản cộng đồng 2019.2.3

Phiên bản Python: 3.7

  1. Tôi đã thay đổi câu lệnh nhập như bên dưới (từ - sang)

từ :

import matplotlib.pylab as plt

đến:

import matplotlib.pyplot as plt

  1. và câu lệnh âm mưu bên dưới (đã thay đổi biểu mẫu lệnh của tôi pyplot thành plt)

từ:

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

đến :

plt.hist(df["horsepower"])

# set x/y labels and plot title
plt.xlabel("horsepower")
plt.ylabel("count")
plt.title("horsepower bins")
  1. sử dụng plt.show để hiển thị biểu đồ

plt.show()

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.