2012-10-20 40 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。