我想在matplotlib中顯示圖像的x y座標。 the example code在全局python安裝中工作得非常好:當我移動光標時,x,y,z值立即得到更新。但是,當我在python虛擬環境中運行示例代碼時,我會多次點擊圖像以便首先顯示座標,然後當我點擊不同的位置時,它會更新一些。點擊幾下後,座標將不再更新。matplotlib示例代碼不能在python虛擬環境中工作
我不知道如何調試。
我想在matplotlib中顯示圖像的x y座標。 the example code在全局python安裝中工作得非常好:當我移動光標時,x,y,z值立即得到更新。但是,當我在python虛擬環境中運行示例代碼時,我會多次點擊圖像以便首先顯示座標,然後當我點擊不同的位置時,它會更新一些。點擊幾下後,座標將不再更新。matplotlib示例代碼不能在python虛擬環境中工作
我不知道如何調試。
這可能是matplotlib的macosx後端的一個問題。切換到使用替代後端matplotlib(例如使用qt4而不是'macosx')。有關如何切換後端以及這意味着什麼的詳細信息,請參閱the docs here。請注意,您可能必須先安裝後端 - 例如pyqt
使用qt4agg
後端,因爲我在這裏暗示。
總結 - 後端處理來自matplotlib的輸出,而matplotlib可以針對不同的輸出格式。這些可以是GUI顯示輸出格式(例如wx
,qt4
等)或文件輸出(例如pdf
)。這些被分別稱爲交互式和非交互式後端。
要更改後臺無論是在代碼中完成
import matplotlib
matplotlib.use('qt4agg')
,或者 - 如果你想改變每次啓動matplotlib - edit your matplotlibrc file設置後端屬性如
backend: Qt4Agg
注:我發佈了一條評論,自從發佈這個答案以來,matplotlib文檔現在引用了這個問題,並且suggest a workaround,儘管評論者注意到在這個答案中提供的解決方案(切換到Qt後端)適用於那些官方文檔無法實現的解決方法爲他們。
爲我工作過(在使用brew安裝pyqt之後)! matplotlib文檔提出了更長的解決方法,我實際上無法做到這一點.. http://matplotlib.org/faq/virtualenv_faq.html – SeF
終於爲我工作的是使本地matplotlibrc
文件包含指令:backend: TkAgg
。
# Within working directory where running python
vim matplotlibrc
# new file via vim, Nano, whatever
backend: TkAgg
This是有益的:
import matplotlib
print matplotlib.rcParams['backend']
我一直在使用自制(brew install pyqt
)也安裝PyQt的,並從/usr/local/lib/python2.7/site-packages/PyQt4
$MyVirtEnv/lib/python2.7/site-packages/
但是當我
import matplotlib
matplotlib.use('qt4Agg')
import librosa
"Matplotlib qt-based backends require an external PyQt4, PyQt5,\n"
ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5,
or PySide package to be installed, but it was not found.
還曾試圖
pip install pyside
Successfully installed pyside-1.2.4
同樣的錯誤
>>> import pyside
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pyside
而且在某些時候試圖重新導入matplotlib(我認爲),當有以下錯誤。
from . import cache
ImportError: cannot import name cache
如果代碼是相同的,那麼在任何包或python版本中應該有所不同。在全局和虛擬環境中使用'pip freeze'並進行比較。另請參閱python版本本身是否相同。也可能是matplotlib使用不同的後端,所以也請檢查'matplotlib.get_backend()'。 – swenzel
的python版本是一樣的。 matplotlib是不同的。我從我的virtualenv中卸載它,並安裝了在我的全局python中找到的相同版本。但是,問題依然存在。 @swenzel – MAS
後臺怎麼樣? – swenzel