python中的空数字并不能保存图

时间:2018-06-14 02:44:55

标签: python matplotlib

这是绘制数字的代码。但为什么在第三个预期数字之前总有两个空数字,似乎我创造了两个空白图。

我无法将数字保存在我的本地计算机fig.savefig('Sens.png')中。存在错误The C++ part of the object has been deleted, attribute access no longer allowed(实际上仅成功保存了一次)。

fig = plt.figure(figsize=(10,10))
m = 1
for s in dataList:
   plt.subplot(2,2,m)
   f = interp1d(FXSpotList, s, 'cubic')    
   xnew = np.linspace(FXSpotList[0], FXSpotList[-1], 40, True)
   plt.plot(xnew, f(xnew), '-')
   plt.xlabel('Spot')
   plt.ylabel(titleList[m-1])
   plt.axvline(x=tradeTest.Pair().Spot(), linestyle='--')  
   plt.axhline(y=0, linestyle='--')
   m = m + 1

plt.figtext(0.5, 0.01, 'Type='+str(tradeTest.Types()[0]), ha='center')
plt.tight_layout()
plt.show()
plt.close()
fig.savefig('Sens.png') 

1 个答案:

答案 0 :(得分:2)

虽然你没有提供Minimal, Complete, and Verifiable example,但很明显你的循环结构有问题。你显示,关闭,然后在每个循环中保存绘图,这可能不是,你打算做什么。循环的最小例子是

import numpy as np
from matplotlib import pyplot as plt

#sample list to iterate over
dataList = ["fig1", "fig2", "fig3"]

plt.figure(figsize=(10,10))
#loop over the list, retrieve data entries and index
for i, s in enumerate(dataList):
    #define position of the plot in a 2 x 2 grid
    plt.subplot(2, 2, i + 1)
    #random plot, insert your calculations here
    plt.plot(range(3), np.random.randint(0, 10, 3))
    #utilize list data
    plt.title(s)

#save figure
plt.savefig('test.png') 
#show figure
plt.show()