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

实验结果:

Matplotlib本机和服务器的使用区别说明_第1张图片

你可能感兴趣的:(服务器)