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')