Python 将生成的打印渲染到matplotlib画布以进行流式处理

Python 将生成的打印渲染到matplotlib画布以进行流式处理,python,matplotlib,pandas,Python,Matplotlib,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 = pa

我试图流式传输通过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

您所拥有的一切都很好,但如果您在windows计算机上工作,则必须以二进制模式写入文件:

fh=open('check.png','wb')
此外,在写入后关闭文件:

fh.close()

上面的代码加上这些细微的调整,在我的机器上保存了一个可读取的.png文件。

您所拥有的很好,但如果您在windows机器上工作,则必须以二进制模式写入文件:

fh=open('check.png','wb')
此外,在写入后关闭文件:

fh.close()
上面的代码加上这些小改动,在我的机器上保存了一个可读的.png文件