我正在尝试流式传输通过pandas df.plot()方法生成的matplotlib,但无法在matplotlib画布上渲染图像。
这就是我正在做的事情
import cStringIO
import matplotlib.pyplot as plt
import pandas
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
labels = ['a', 'b', 'c', 'd', 'e']
s = pandas.Series(np.random.randn(5), index=labels)
fig = plt.figure()
s.plot()
canvas = FigureCanvas(fig)
output = cStringIO.StringIO()
canvas.print_png(output)
fh=open('check.png','w')
fh.write(output.getvalue())
check.png结果是空白的。我想我无法将pandas plot函数生成的绘图渲染到画布。
第二次尝试:查看轴但没有数据
import cStringIO
import matplotlib.pyplot as plt
import pandas
import numpy as np
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
labels = ['a', 'b', 'c', 'd', 'e']
s = pandas.Series(np.random.randn(5), index=labels)
fig = plt.figure()
ax = fig.add_subplot(111)
s.plot(ax=ax)
canvas = FigureCanvas(fig)
output = cStringIO.StringIO()
canvas.print_png(output)
fh=open('check.png','w')
fh.write(output.getvalue())
谢谢! -Abhi
答案 0 :(得分:1)
你有什么没关系,但如果你正在使用Windows机器,你必须以二进制模式编写文件:
fh=open('check.png','wb')
此外,写完后关闭文件:
fh.close()
上面的代码与这些小调整相结合,可以在我的机器上保存一个可读的.png。