用python Linux(无GUI)中生成统计图
我有这样一个需求:在我的raspberry pi 3中运行着一个爬虫程序,根据爬到的数据,使用matplotlib自动生成统计图(图片格式),然后发送到我的邮箱.
但是我ssh远程登录树莓派,运行如下脚本生成test.png图片时
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
t = np.arange(0.0, 10.0, 0.001)
s = np.sin(2*np.pi*t)
plt.plot(t, s)
plt.xlabel('time (s)')
plt.ylabel('voltage (mV)')
plt.title('About as simple as it gets, folks')
plt.grid(True)
plt.savefig("test.png")
出现如下错误:
(process:2818): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Unable to init server: Could not connect: Connection refused
Unable to init server: Could not connect: Connection refused
(simple_plot.py:2818): Gdk-CRITICAL **: gdk_cursor_new_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
Traceback (most recent call last):
File "simple_plot.py", line 1, in <module>
import matplotlib.pyplot as plt
File "/usr/local/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 114, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
globals(),locals(),[backend_name],0)
File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_gtk3agg.py", line 11, in <module>
from . import backend_gtk3
File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_gtk3.py", line 58, in <module>
cursors.MOVE : Gdk.Cursor.new(Gdk.CursorType.FLEUR),
TypeError: constructor returned NULL
而我在树莓派gui系统中运行上述脚本是可以生成test.png文件的。
所以上述错误只是出现在无gui的情况下,google了多个结果都没有解决方法。
使用python绘制统计图库(类似matplotlib)可以在无gui的情况下根据所给数据生成统计图(png,jpeg等等)。
或者有别的方法实现我上述需求。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
原因我在官网找到了下面这句话,解释了
matplotlib.use("Agg")
放在import matplotlib.pyplot as plt
之前的原因。感谢@sPeng.使用matplotlib.use("Pdf")
同样可以解决这个错误.我也遇到同样的错误,我在raspberry pi 2上运行。为什么我添加了这句以后,反而没有图形输出了呢?