Matplotlib似乎需要$ DISPLAY環(huán)境變量,這意味著X服務器正在運行。某些Web托管服務不允許運行X服務器會話。有沒有一種方法可以在不運行X服務器的情況下使用matplotlib生成圖形?[username@hostname ~]$ python2.6Python 2.6.5 (r265:79063, Nov 23 2010, 02:02:03)[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import matplotlib.pyplot as plt>>> fig = plt.figure()Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/username/lib/python2.6/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib/pyplot.py", line 270, in figure **kwargs) File "/home/username/lib/python2.6/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib/backends/backend_tkagg.py", line 80, in new_figure_manager window = Tk.Tk() File "/usr/local/lib/python2.6/lib-tk/Tkinter.py", line 1643, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)_tkinter.TclError: no display name and no $DISPLAY environment variable>>>
3 回答

LEATH
TA貢獻1936條經(jīng)驗 獲得超7個贊
您也可以在導入之前簡單地調(diào)用matplotlib.use('Agg') matplotlib.pyplot,然后照常繼續(xù)。
例如
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(10))
fig.savefig('temp.png')
您也不必使用Agg后端。的PDF,PS,SVG,AGG,開羅,和GDK后端都可以沒有的X服務器使用。但是,默認情況下將僅構(gòu)建Agg后端(我認為嗎?),因此很有可能在您的特定安裝中可能未啟用其他后端。
或者,您可以只在.matplotlibrc文件中設置backend參數(shù)以自動matplotlib.pyplot使用給定的渲染器。

慕碼人8056858
TA貢獻1803條經(jīng)驗 獲得超6個贊
對于它的價值,您實際上并沒有兩次導入matplotlib。您要導入matplotlib,然后再導入未自動導入的子模塊。是的,還有其他方法(例如,更改.maplotlibrc
文件),這是最簡單的方法。
添加回答
舉報
0/150
提交
取消