2

我正在尝试流式传输通过 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 原来是空白的。我想我无法将熊猫绘图函数生成的绘图渲染到画布上。

第二次尝试:查看坐标轴但没有数据

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

谢谢!-阿比

4

1 回答 1

2

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

fh=open('check.png','wb')

另外,写入后关闭文件:

fh.close()

您上面的代码与这些小调整相结合,在我的机器上保存了一个可读的 .png。

于 2012-10-20T02:19:33.217 回答