在无头服务器上创建matplotlib图非常慢
我在家里的服务器上运行的是Ubuntu 14.04(服务器版),安装了Python 2.7.6和matplotlib 1.3.1,使用TkAgg作为后端。我是通过ssh -Y连接到这个服务器的。
我遇到的问题是,创建绘图对象的速度非常慢。举个例子:
import matplotlib.pyplot as plt
x=[0,1,2,3,4]
y=[0,1,4,9,16]
plt.plot(x,y)
这段代码运行大约需要10秒钟,而实际上应该只需要几分之一秒。注意,这里并没有显示绘图,如果我加上plt.show()
,时间上也没有明显的变化。在Python解释器中运行这段代码或者从文件中运行也没有区别。只要我等得够久,绘图就会在我的本地屏幕上正常显示。而且,无论是绘制5个点还是50个点,似乎都没有影响。
有没有什么想法?
1 个回答
1
在@Paul H的回答基础上,这段代码会把图表输出为SVG格式的图形,然后通过外部的feh
工具来显示这个图形。
设置后端是很重要的——想了解更多信息,可以查看什么是后端。
源代码
import matplotlib
# see http://matplotlib.org/faq/usage_faq.html#what-is-a-backend
# or
# https://matplotlib.org/stable/users/explain/backends.html
matplotlib.use('Svg')
import os
import matplotlib.pyplot as plt
x=[0,1,2,3,4]
y=[0,1,4,9,16]
plt.plot(x,y)
plt.savefig('plot.svg')
os.system('feh plot.svg') # or "eog" for Gnome