2016-04-22 3 views
0

リスト内で一連のチャートを収集し、すべてを1回でExcelに出力しようとしています。グラフオブジェクトのリストですが、すべてのプロットは表示されません

リストにはすべてのチャートが「matplotlib.figure.Figure at(example)0xb8eae80」と表示されていますが、すべて表示されるわけではありません。 progが実行されると、それらはすべてiPython(Spyderの)コンソールに表示されます。

iPythonでlist [i]を使って個別に表示しようとすると、いくつかのグラフが表示されますが、いくつかのグラフは表示されません(同じグラフはありません)。

Excelに出力する場合、「欠落」チャートはデフォルトサイズの空白キャンバスを持つため、XLはチャートの存在に関するいくつかの情報を得ていますが、「figsize」情報も取得できません。

以下の例のコードでは不足しているチャートは、(その簡単な例、私はそれがより良いスクリプト可能実現)複数のラインプロットとチャートの任意の助け

おかげです。 (私の元のコードと同じ問題を抱えている)

例コード:

import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 
import xlwings as xw 


ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) 
xdf = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD')) # splits out list into components 
xdf = xdf.cumsum() 

figlist = [] # set up list to collect charts (a list of objects) 

fig = plt.figure() 
xdf.A.plot(figsize = (9,5), grid=True) #plots individual column 
plt.axhline(0,lw=2, color = "black") 
plt.title('A') 
figlist.append(fig) 

fig = plt.figure() 
xdf.B.plot(figsize = (9,5), grid=True) #plots individual column 
plt.axhline(0,lw=2, color = "black") 
plt.title('B') 
figlist.append(fig) 

fig = plt.figure() 
xdf.C.plot(figsize = (9,5), grid=True) #plots individual column 
plt.axhline(0,lw=2, color = "black") 
plt.title('C') 
figlist.append(fig) 

fig = plt.figure() 
xdf.D.plot(figsize = (9,5), grid=True) #plots individual column 
plt.axhline(0,lw=2, color = "black") 
plt.title('D') 
figlist.append(fig) 

fig = plt.figure() 
xdf.plot(figsize = (9,5), grid=True) #plots all columns on same chart 
plt.axhline(0,lw=2, color = "black") 
plt.title('All') 
figlist.append(fig) 

# output all charts to XL 
xw.Workbook() # open new workbook 

for i in range(len(figlist)): 
    plotno = 'Plot' + str(i) 
    plot = xw.Plot(figlist[i]) 
    plot.show(plotno, left=30, top=(i*500+20)) 

答えて

0

あなたはdocsから、パンダによって生成されたプロットに正しくFigureオブジェクトにアクセスしていない:

import pandas as pd 
import numpy as np 

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) 
ax = df.plot(kind='bar') 
fig = ax.get_figure() 

あなたの場合、何かのようなもの

ax = xdf.plot(figsize = (9,5), grid=True) #plots all columns on same chart 
plt.axhline(0,lw=2, color = "black") 
plt.title('All') 
figlist.append(ax.get_figure()) 

最後のチャート

+0

問題が解決しました。多くの方に感謝します。私の誤った方法がチャートの一部ではなく、最後のチャートではうまくいかなかった理由は何ですか? – johnb

+0

いいえ、私はパンダとマトラプラブが一緒にフードの下でどのように動作するのかは十分に分かりませんが、[this](http://stackoverflow.com/questions/19555525/saving-plots-axessubplot-generated-from-python-pandas -with-matplotlibs-savefi)は同じエラーを記述します。 –

関連する問題