簡體   English   中英

matplotlib 中沒有繪圖窗口

[英]No plot window in matplotlib

我剛剛使用突觸包系統在 Ubuntu 9.10 中安裝了 matplotlib。 但是,當我嘗試以下簡單示例時

>>> from pylab import plot;
>>> plot([1,2,3],[1,2,3])
[<matplotlib.lines.Line2D object at 0x9aa78ec>]

我沒有情節窗口。 關於如何讓繪圖窗口顯示的任何想法?

你可以輸入

import pylab
pylab.show()

或者更好,使用ipython -pylab


由於不再推薦使用pylab ,現在的解決方案是

import matplotlib.pyplot as plt

plt.plot([1,2,3])

plt.show()

pylab.show()工作但阻塞(你需要關閉窗口)。

一個更方便的解決方案是在啟動時執行pylab.ion() (開啟交互模式):所有(pylab 等價物) pyplot.*命令立即顯示它們的繪圖。 關於交互模式的更多信息可以在官方網站上找到。

我還第二次使用了更方便的ipython -pylab--pylab ,在較新的版本中),它允許您跳過from … import …部分( %pylab也可以在較新的 IPython 版本中工作)。

嘗試這個:

import matplotlib
matplotlib.use('TkAgg') 

導入pylab之前

下面的代碼片段適用於 Eclipse 和 Python shell:

import numpy as np
import matplotlib.pyplot as plt

# Come up with x and y
x = np.arange(0, 5, 0.1)
y = np.sin(x)

# Just print x and y for fun
print x
print y

# Plot the x and y and you are supposed to see a sine curve
plt.plot(x, y)

# Without the line below, the figure won't show
plt.show()

出現任何錯誤? 這可能是沒有設置后端的問題。 您可以從 Python 解釋器或主目錄中的配置文件 ( .matplotlib/matplotlibrc ) 設置它。

要在代碼中設置后端,您可以執行

import matplotlib
matplotlib.use('Agg')

其中“Agg”是后端的名稱。 存在哪些后端取決於您的安裝和操作系統。

http://matplotlib.sourceforge.net/faq/installing_faq.html#backends

http://matplotlib.org/users/customizing.html

現代 IPython 使用帶有可選后端參數的“ --matplotlib ”參數。 它默認為“自動”,這在 Mac 和 Windows 上通常已經足夠了。 我還沒有在 Ubuntu 或任何其他 Linux 發行版上測試過它,但我希望它可以工作。

ipython --matplotlib

如果您使用--pylab選項啟動 IPython,則不需要調用show()draw() 嘗試這個:

ipython  --pylab=inline

--pylab不再適用於Jupyter ,幸好我們可以在添加調整ipython_config.py文件使pylab以及autoreload功能。

c.InteractiveShellApp.extensions = ['autoreload', 'pylab']
c.InteractiveShellApp.exec_lines = ['%autoreload 2', '%pylab']

如果您是 Anaconda 和 Spyder 的用戶,那么最適合您的解決方案是:

工具 --> 首選項 --> Ipython 控制台 --> 圖形部分

然后在圖形支持(Matplotlib)部分:

選擇兩個可用選項

並在圖形后端

選擇自動

如果您遇到pylab.show()凍結 IPython 窗口的問題(這可能是 Mac OS X 特定的;不確定),您可以在 IPython 窗口中 cmd-c,切換到繪圖窗口,它會爆發.

顯然,以后對pylab.show()調用不會凍結 IPython 窗口,只會凍結第一次調用。 不幸的是,我發現每次重新安裝 matplotlib 時,繪圖窗口的行為/與 show() 的交互都會發生變化,因此該解決方案可能並不總是成立。

使用 easy_install 時的另一種可能性是您需要使用最新版本的 matplotlib。 嘗試:

import pkg_resources
pkg_resources.require("matplotlib")

在導入 matplotlib 或其任何模塊之前。

暫無
暫無

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

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