簡體   English   中英

matplotlib:使用TkAgg后端減小圖形大小時遇到​​麻煩

[英]matplotlib: trouble reducing figure size with TkAgg backend

我在使用TkAgg后端減小matplotlib圖的大小時遇到​​問題。

首先,讓我證明我可以增加圖形的大小。 運行以下代碼后,

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一起使用。 我在首選項->控制台->外部模塊-> GUI后端中將Qt4Agg設置為后端,然后重新啟動Spyder。 調用mpl.get_backend()返回MacOSX

我想要一個與Spyder一起使用的后端,允許我強制將圖形窗口置於所有其他窗口的頂部(請參閱此文章 ),並允許我隨意更改圖形窗口的大小。

如果很重要,我將運行matplotlib 1.3.1和Enthought Canopy Python 2.7.6。

更新:我有Qt4Agg后端與Spyder一起使用。 如果沒有人在今天晚上之前發布解決方案以使TkAgg后端正常工作,那么我將發布如何在Spyder中使用Qt4Agg。

好吧,也許不可能通過TkAgg后端來減小圖形窗口的大小。 也許是一個錯誤。

作為解決方法,Qt4Agg允許您隨意更改圖形大小。 這是在Spyder 2.3.1中使用Qt4Agg后端的方法。

  1. 轉到首選項->控制台->外部模塊
  2. 對於“ Qt-Python綁定庫選擇”,請使用“ PyQt4”
  3. 選中“為Qt安裝Spyder的輸入掛鈎”旁邊的框。
  4. 將GUI后端設置為“ Qt4Agg”(不帶引號)
  5. 重新啟動Spyder

注意:如果在重新啟動Spyder之后再次打開首選項窗格,則必須再次執行步驟2。 由於某些原因,每次打開首選項窗格時,Spyder都會自動默認為“ PySide”而不是“ PyQt4”。 我計划將此報告給Spyder開發團隊。

暫無
暫無

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

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