Я пытаюсь собрать серию диаграмм в список, а затем вывести их все за один прогон в Excel.
Список показывает все диаграммы как «matplotlib.figure.Figure at (example) 0xb8eae80», но не отображает их все. Все они отображаются в консоли iPython (в Spyder) при запуске проги.
Если я попытаюсь показать их по отдельности, используя list[i] в iPython, некоторые диаграммы будут отображаться, а некоторые нет (те же диаграммы отсутствуют).
Для вывода в 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))