我有一个xlwings函数(ChartXYZ()
),它一直没有问题。它会在excel中生成matplot图像。
我现在添加了第二个xlwings函数(ChartSomethingElse()
),它还添加了另一个matplot图像。我确保不要将新图像命名为旧图像。
问题是 - 我现在在FIRST函数(ChartXYZ()
)上收到以下错误:
TypeError:不知道如何处理该图像对象
第二个函数(ChartSomethingElse()
)没有问题,并产生了matplot。
功能一:
@xls.func
def plotHistData(ticker,field,startDate,endDate):
df = histdata(ticker,field,startDate,endDate)
sht = xls.Book.caller().sheets.active
fig = df.plot()
sht.pictures.add(fig, name=ticker+' hist', update=True)
return 'Plotted chart'
功能二:
@xls.func
def plotSpreadData(tickerOne,tickerTwo,fieldOne,fieldTwo,startDate,endDate):
df_1 = histdata(tickerOne,fieldOne,startDate,endDate)
df_2 = histdata(tickerTwo,fieldTwo,startDate,endDate)
diff = df_1.subtract(df_2)*100
gs = gridspec.GridSpec(2, 1, height_ratios=[2,1])
figure = plt.figure(1)
plt.subplot(gs[0])
plt.plot(df_1)
plt.plot(df_2)
plt.xticks([])
plt.annotate('%0.3f' % df_1.iloc[-1],xy=(1, df_1.iloc[-1]),xytext=(8,0),
xycoords=('axes fraction', 'data'), textcoords='offset points')
plt.annotate('%0.3f' % df_2.iloc[-1],xy=(1, df_2.iloc[-1]),xytext=(8,0),
xycoords=('axes fraction', 'data'), textcoords='offset points')
font = {'family' : 'sans-serif',
'weight' : 'normal',
'size' : 8}
plt.rc('font', **font)
plt.subplot(gs[1])
plt.plot(diff)
plt.annotate('%0.2f' % diff.iloc[-1],xy=(1, diff.iloc[-1]),xytext=(8,0),
xycoords=('axes fraction', 'data'), textcoords='offset points')
plt.rc('font', **font)
sht = xls.Book.caller().sheets.active
sht.pictures.add(figure, name=tickerOne + ' ' + tickerTwo +' spread', update=True)
return 'Plotted spread chart'