Matplotlib本機和服務器的使用區別說明

Matplotlib本機和服務器的使用區別說明

測試代碼:

# coding=utf-8
import numpy as np
from numpy.linalg import cholesky
import matplotlib.pyplot as plt

sampleNo = 1000;
# 一維正態分佈
mu = 3
sigma = 0.1
np.random.seed(0)
s = np.random.normal(mu, sigma, sampleNo )
#s = np.random.rand(1, sampleNo )
plt.hist(s, 10, normed=True)   #####bins=10
plt.savefig('save.jpg')
plt.show()


問題根源:

以上代碼在本機上測試是沒有問題的,但是在服務器遠程進行繪製的話就會出現問題,而問題的根源在於:

matplotlib的默認backend是TkAgg,而FltAgg、GTK、GTKCairo、TkAgg、Wx和WxAgg這幾個backend都要求有GUI圖形界面,所以在ssh操作的時候會報錯。


解決方法:

在導入matplotlib的時候指定不需要GUI的backend(Agg、Cairo、PS、PDF和SVG),如:

import matplotlib.pyplot as plt
plt.switch_backend('agg')

服務器測試代碼:

# coding=utf-8
import numpy as np
from numpy.linalg import cholesky
import matplotlib.pyplot as plt
plt.switch_backend('agg')

sampleNo = 1000;
# 一維正態分佈
mu = 3
sigma = 0.1
np.random.seed(0)
s = np.random.normal(mu, sigma, sampleNo )
#s = np.random.rand(1, sampleNo )
plt.hist(s, 10, normed=True)   #####bins=10
plt.savefig('save.jpg')

實驗結果:

實驗結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章