簡體   English   中英

導入沒有顯示的 Matplotlib

[英]Import Matplotlib without a display

我正在嘗試在我的 linux 服務器上運行 python 腳本並制作並保存一些圖。 我已經安裝了ipythonpylabmatplotlib但是當我運行我的腳本時,我收到了這個錯誤:

Traceback (most recent call last):
  File "/root/dining_hall_graph.py", line 14, in <module>
    from pylab import * 
  File "/usr/lib64/python2.7/site-packages/pylab.py", line 1, in <module>
    from matplotlib.pylab import *
  File "/usr/lib64/python2.7/site-packages/matplotlib/pylab.py", line 265, in <module>
    from matplotlib.pyplot import *
  File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 97, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/usr/lib64/python2.7/site-packages/matplotlib/backends/__init__.py", line 25, in pylab_setup
    globals(),locals(),[backend_name])
  File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_gtkagg.py", line 10, in <module>
    from matplotlib.backends.backend_gtk import gtk, FigureManagerGTK, FigureCanvasGTK,\
  File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_gtk.py", line 13, in <module>
    import gtk; gdk = gtk.gdk
  File "/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py", line 64, in <module>
    _init()
  File "/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py", line 52, in _init
    _gtk.init_check()
RuntimeError: could not open display

在這一行from pylab import *

如何在我的 linux 服務器上運行的 python 腳本中繪制和保存圖形?

謝謝

您幾乎不應該使用from pylab import *

numpyscipymatplotlib導入您需要的內容。

在沒有顯示的機器上,你需要使用agg后端:

您可以通過指定環境變量MPLBACKEND來實現此MPLBACKEND

$ MPLBACKEND=Agg python plot.py

或者在導入matplotlib之前導入matplotlib.pyplot

import matplotlib
matplotlib.use('Agg')

import matplotlib.pyplot as plt

plt.plot([1, 2, 1])
plt.savefig('test.pdf')

要使其成為默認值,您可以在當前目錄或$HOME/.config/matplotlib創建一個名為matplotlibrc的文件,其內容如下:

backend: Agg

或者您可以啟用 X-Forwarding,以便在您的主機上彈出圖:

ssh -X user@server

暫無
暫無

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

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