簡體   English   中英

Pycharm 不顯示情節

[英]Pycharm does not show plot

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

發生的情況是一個窗口出現不到一秒鍾,然后又消失了。

在相同的代碼上使用 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)]'}

只需使用

import matplotlib.pyplot as plt
plt.show()

該命令告訴系統在 Pycharm 中繪制繪圖。

例子:

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

我意識到這是舊的,但我想我會澄清其他旅行者的誤解。 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來稍微縮短這些語句。

我有同樣的問題。 檢查plt.isinteractive()是否為 True。 將其設置為“假”對我有幫助。

plt.interactive(False)

我嘗試了不同的解決方案,但最終對我plt.show(block=True)plt.show(block=True) 您需要在myDataFrame.plot()命令之后添加此命令才能使其生效。 如果您有多個繪圖,只需在代碼末尾添加命令。 它將允許您查看正在繪制的每個數據。

import matplotlib
matplotlib.use('TkAgg')

為我工作。 (PyCharm/OSX)

我在我的 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)

我找到了解決辦法。 這對我有用:

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

打電話后不久

plt.imshow() 

稱呼

plt.show(block = True)

您將獲得帶有圖像的 matplotlib 彈出窗口。

這是一種阻塞方式。 在彈出窗口關閉之前,不會運行進一步的腳本。

對我來說,問題是 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。

只需添加plt.pyplot.show() ,就可以了。

最好的解決方案是禁用 SciView。

以上都不對我有用,但以下方法對我有用:

  1. 禁用 pycharm settings > Tools > Python Scientific的復選框(Show plots in tool window)。

  2. 我收到錯誤No PyQt5 module found 繼續使用以下方法安裝PyQt5

     sudo apt-get install python3-pyqt5

請注意,對於某些人來說,僅第一步就足夠了並且有效。

我在 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)

對於初學者,您可能還想確保在控制台運行腳本,而不是常規 Python 代碼。 突出顯示一段代碼並運行它是相當容易的。

我的環境:macOS 和 anaconda3

這對我有用:

matplotlib.use('macosx')

或交互模式:

matplotlib.use('TkAgg')

我有這個問題,我可以解決它,你可以測試我的方式..從設置-->工具-->python科學禁用“在工具窗口中顯示圖”

我能夠在這里結合一些其他建議對我plt.interactive(False) ,但只有在將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

DanT 的評論為我解決了這個問題,matplotlib 和 pycharm 在 linux 上使用 GTKagg 后端。 導入 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)

正確顯示圖形。

就我而言,我想做以下事情:

    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。 問候!

在非交互式環境中,我們必須使用 plt.show(block=True)

對於那些在 IDE 中運行腳本的人(而不是在 python 控制台或筆記本等交互式環境中工作),我發現這是最直觀和最簡單的解決方案:

plt.imshow(img)
plt.waitforbuttonpress()

它顯示圖形並等待用戶單擊新窗口。 只有這樣它才會恢復腳本並運行其余的代碼。

需要為 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()

將導入更改為:

import matplotlib.pyplot as plt

或使用這一行:

plt.pyplot.show()

我正在使用 Ubuntu,我按照@Arie 上面所說的進行了嘗試,但僅在終端中使用了這一行:

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

它奏效了!

在 Pycharm 中,有時 Matplotlib.plot 不會出現。

因此,在調用plt.show()請檢查plt.show()的右側工具欄。 在 SciView 中,每個生成的圖都將被存儲。

當我嘗試繪制直方圖和以下點對我有用時,我遇到了上述錯誤。

操作系統:Mac Catalina 10.15.5

Pycharm 版本:社區版 2019.2.3

Python 版本:3.7

  1. 我將導入語句更改為如下(從 - 到)

從 :

import matplotlib.pylab as plt

到:

import matplotlib.pyplot as plt

  1. 和 plot 語句到下面(將我的命令形式 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM