RuntimeError:无效的DISPLAY变量

Dal*_*lek 45 python linux matplotlib

我正在使用ssh命令在另一台机器上运行我的python脚本linux.我也运行了这个命令:

source ~/.bashrc 
Run Code Online (Sandbox Code Playgroud)

登录其他计算机后,为了在新计算机中定义正确的路径.我收到运行以下python代码行的错误消息,即使我已经尝试通过定义后端来遵循此问题中的指令.

>>> import matplotlib
>>> import pylab as plt
>>> matplotlib.use('Agg')
>>> import numpy as np
>>> x=np.arange(0,2,0.001)
>>> y=np.sin(x)**2+4*np.cos(x)
>>> fig = plt.figure()
>>> plt.plot(x,y,'r.')     
Run Code Online (Sandbox Code Playgroud)

错误消息

This probably means that Tcl wasn't installed properly.
Traceback (most recent call last):
  File "Systematic_Optimised.py", line 513, in <module>
    fig = plt.figure()
  File "/vol/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.py", line 435, in figure
    **kwargs)
  File "/vol/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 47, in new_figure_manager
    return new_figure_manager_given_figure(num, thisFig)
  File "/vol/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 54, in new_figure_manager_given_figure
    canvas = FigureCanvasQTAgg(figure)
  File "/vol/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 72, in __init__
    FigureCanvasQT.__init__(self, figure)
  File "/vol/aibn84/data2/zahra/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4.py", line 68, in __init__
    _create_qApp()
  File "/vol/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_qt5.py", line 138, in _create_qApp
    raise RuntimeError('Invalid DISPLAY variable')
RuntimeError: Invalid DISPLAY variable
Run Code Online (Sandbox Code Playgroud)

任何建议如何解决问题

Mau*_*ldi 58

您必须声明matplotlib.use('agg')之前import pylab as plt.

参考

  • 对我来说,`import matplotlib; matplotlib.use('agg')`没有修复错误,但是`import matplotlib; matplotlib.pyplot.switch_backend('agg')`做了(如[建议](https://github.com/matplotlib/matplotlib/issues/3466/#issuecomment-270603717)). (13认同)

小智 43

plt.switch_backend('agg')
Run Code Online (Sandbox Code Playgroud)

import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

  • 太好了,现在我可以根据运行代码的方式来切换后端。使用“ agg”时出现问题,该命令停止在命令窗口中显示图,有时可能令人失望。因此,我可以关闭后端供我使用。 (2认同)