[英]Plotting figures using matplotlib, over ssh using X11 and OS X
摘要:當本地計算機運行OS X時,如何通過SSH將圖形繪制到遠程計算機?
我有計算機A,並且嘗試使用matplotlib在計算機B上進行繪圖。我遇到的問題是,當我使用matplotlib時,該圖僅顯示在計算機A上。我在VNC中查看並彈出它們。 我可以將-X / -Y SSH到計算機A並運行xcalc,它將顯示在計算機B上。我可以將計算機B連接到運行Red Hat的第三台計算機,並且繪圖將顯示在計算機B上。我確信它不是是計算機B的問題。 我相信我的問題與此問題相同:軟件包安裝程序都不支持matplotlib的X11后端。 我無法發表評論,所以我堅持將我嘗試過的內容放在一個新問題中。 這是對多次嘗試都不起作用的相同問題的另一種描述。
如前所述,我已經在計算機A上為matplotlib安裝后端方面嘗試了許多解決方案。 我已經嘗試了Macports的所有庄園以及自制和點子組合。 我敢肯定,混合這么多包處理程序是一個壞主意,但是這么多解決方案似乎都是“ sudo ***** install package-name”。
要測試matplotlib是否正在執行我想要的操作,我使用以下python代碼段:
import matplotlib
matplotlib.use('gtk') # gtk is an example, I change it
import matplotlib.pyplot as plt
plt.ion()
plt.figure(1)
plt.plot([1]*10)
我不記得我嘗試過的所有事情。 我嘗試過的一些方法:
我嘗試使用GTK和GTKCairo,但無法解決我的問題,因為我無法使GTK正常工作。 Homebrew GTK仍然不支持X11,因此即使它正確安裝,我也認為它不會解決我的問題。 我尚未嘗試以其他方式安裝GTK。 我需要從源代碼安裝它嗎? 有人有這個工作嗎?
GTK錯誤:
ImportError: No module named _backend_gdk
后端MacOS,TkAgg,qt5agg都可以工作,但是數字顯示在計算機A上。我必須安裝pyqt5。 如果我未通過VNC連接,則python會引發有關無顯示的錯誤。 這三個都給出相同的錯誤:
Feb 22 13:00:22 Python[57649] <Error>: Set a breakpoint at CGSLogError to catch errors as they are logged.
Feb 22 13:00:22 Python[57649] <Error>: This user is not allowed access to the window system right now.
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
細節:
計算機A運行OS X 10.11計算機B運行OS X 10.12
編輯:我從源(以及QT)安裝了PyQt4,它沒有幫助。 我明確下載並安裝了X11版本。 我設置了matplotlib.use('qt4agg'),並且數字仍然出現在計算機A上。也許這是我安裝的“ macosx” QT嗎? 我不知道
最終導致我找到正確的答案。 問題是我無法安裝使用X11的后端。 事實證明macports具有使用x11的tk版本。 我認為這實際上是使用macports安裝python時的默認設置。
我從OS X服務器(計算機A)通過ssh / X11獲取matplotlib繪圖的步驟是:
1)卸載先前安裝的matplotlib和tk的macports:
sudo port uninstall py27-matplotlib
sudo port uninstall py27-tkinter
sudo port uninstall tk
2)重新安裝matplotlib以使用X11
sudo port install tk
sudo port install py27-tkinter
sudo port install py27-matplotlib -cairo +tkinter
“ -cairo”可能不是必需的。 tk沒有標志,因為默認為x11。
3)測試python + matplotlib:
import matplotlib
matplotlib.use('tkagg') # set the backend to tk, using agg renderer
import matplotlib.pyplot as plt
plt.ion()
plt.figure(1)
plt.plot([1]*10)
這將在計算機B上打開一個圖。
一些注意事項:
1)確保$ PYTHONPATH環境變量中沒有任何指向其他安裝程序(例如自制軟件或系統python)執行的python安裝的內容。 這可能會導致加載錯誤的matplotlib安裝。
2) 您可以使用matplotlibrc配置文件來避免每次打開matplotlib時都必須重新指定后端。
3)如我的原始帖子所述, Homebrew不再為GTK支持X11。 顯然,有一種方法可以讓自制軟件在X11上使用tk ,但是我還沒有弄清楚如何使它工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.