2012-10-20 42 views
1

我想通过熊猫df.plot()方法生成一个matplotlib流,但麻烦得到图像呈现在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()) 

谢谢! -Abhi

回答

1

你有什么是好的,但你必须写在二进制模式的文件,如果你在Windows机器上工作:

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

另外,关闭文件写入后:

fh.close() 

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