2014-09-26 172 views
1

我在用TkAgg後端解決matplotlib數字大小時遇到​​了問題。matplotlib:用TkAgg後端解決數字大小問題

首先,讓我證明我可以增加一個數字的大小。運行下面的代碼後,

import matplotlib as mpl 
mpl.use('TkAgg') 
import matplotlib.pyplot as plt 
plt.ion() 
fig = plt.figure(figsize = [2, 8]) 
fig.set_size_inches([8,8], forward = True) 
fig.canvas.draw() 
print fig.get_size_inches() 

fig.get_size_inches()打電話給[ 8, 7.475]。這有點煩人,我得到7.475而不是8,但我可以處理。接下來,當我運行下面的代碼

import matplotlib as mpl 
mpl.use('TkAgg') 
import matplotlib.pyplot as plt 
plt.ion() 
fig = plt.figure(figsize = [8, 8]) 
fig.set_size_inches([2,8], forward = True) 
fig.canvas.draw() 
print fig.get_size_inches() 

然後fig.get_size_inches()打電話給[ 6, 7.475]。減少到62相差甚遠。請注意,交互模式必須打開。如果我關閉交互模式(plt.ioff()),則TkAgg後端會給出[8, 8][2, 8],但數字窗口的形狀看起來更像[8, 7.475][6, 7.475]

如果我切換到Qt4Agg後端,問題就消失了。不幸的是,我不能讓Qt4Agg後端與Spyder一起工作。我在Preferences - > Console - > external modules - > GUI backend中將Qt4Agg設置爲後端,然後重新啓動Spyder。致電mpl.get_backend()的電話將返回MacOSX

我想要一個與Spyder配合使用的後端,可以讓我強制將數字窗口置於所有其他窗口之上(請參閱this post),並允許我隨意更改數字窗口大小。

萬一它很重要,我正在運行matplotlib 1.3.1和Enthought Canopy Python 2.7.6。

更新:我得到了Qt4Agg後端與Spyder一起工作。如果今天晚上沒有人發佈解決方案讓TkAgg後端正常工作,那麼我會發布如何將Qt4Agg與Spyder一起使用。

+0

我沒有看到任何錯誤。運行你的代碼片段會導致'[10。 10.]'和'[2。 10.]',分別。我正在使用matplotlib 1.2.1和python 2.7.5+。 – 2014-09-26 09:10:47

+0

@TheDude,感謝您的評論。它迫使我進一步檢查我的設置。我在Spyder上運行,它具有交互模式。如果交互模式關閉,則TkAgg後端報告「[10。10.]'和'[2。 '],儘管數字窗口大小仍然是錯誤的。我還發現問題不會發生在所有後端。最後,我將數字窗口大小從[10,10]改爲[8,8],以確保我的小型筆記本電腦屏幕不會從10到9.475輕微降低。我原來的帖子已經更新了這些發現。 – Stretch 2014-09-26 14:26:53

回答

0

那麼,也許不可能用TkAgg後端來減少數字窗口大小。也許這是一個錯誤。

作爲解決方法,Qt4Agg可以讓您隨意更改圖形大小。以下是如何在Spyder 2.3.1中使用Qt4Agg後端。

  1. 轉到首選項 - >控制檯 - >外部模塊
  2. 對於「Qt的Python綁定庫選擇」使用「PyQt4的」
  3. 勾選「安裝Spyder的輸入鉤Qt的」框。
  4. 設置GUI後端「Qt4Agg」(不帶引號)
  5. 重啓Spyder的

注意:如果你打開的喜好重新啓動的Spyder後再次窗格中,則必須重新做第2步。出於某種原因,只要您打開偏好設置窗格,Spyder會自動默認爲「PySide」而不是「PyQt4」。我打算向Spyder開發團隊報告。