我在用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]
。減少到6
與2
相差甚遠。請注意,交互模式必須打開。如果我關閉交互模式(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一起使用。
我沒有看到任何錯誤。運行你的代碼片段會導致'[10。 10.]'和'[2。 10.]',分別。我正在使用matplotlib 1.2.1和python 2.7.5+。 – 2014-09-26 09:10:47
@TheDude,感謝您的評論。它迫使我進一步檢查我的設置。我在Spyder上運行,它具有交互模式。如果交互模式關閉,則TkAgg後端報告「[10。10.]'和'[2。 '],儘管數字窗口大小仍然是錯誤的。我還發現問題不會發生在所有後端。最後,我將數字窗口大小從[10,10]改爲[8,8],以確保我的小型筆記本電腦屏幕不會從10到9.475輕微降低。我原來的帖子已經更新了這些發現。 – Stretch 2014-09-26 14:26:53