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

实验结果:

实验结果

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