我有以下绘图功能,可以保存随机行走输入(随机漫步应该模仿股票和债券组合,在给定特定输入的情况下,彼此之间重新平衡,曝光应该显示暴露于股票投资组合):
def stock_save_img_run(k):
stock_vals = pd.read_csv('stock_vals_run_' + str(k) + '.csv', sep=';', encoding='utf-8-sig')
plt.subplot(2, 1, 1)
plt.plot(stock_vals['date'], stock_vals['stock_val'], color='#191970')
plt.plot(stock_vals['date'], stock_vals['protected_amt'], color='#191970', ls='dashed')
plt.stackplot(stock_vals['date'], stock_vals['exposure'] * stock_vals['stock_val'], (1 - stock_vals['exposure']) * stock_vals['stock_val'], color=('gray'), colors=('gray', 'silver'))
plt.subplot(2, 1, 2)
plt.plot(stock_vals['date'], stock_vals['exposure'], color='#191970', lw='0.5')
plt.ylabel('Exposure (in %)')
plt.savefig('chart_' + str(k) + '.png')
plt.show()
plt.cla()
del stock_vals
为了使情节再次看起来正常,我必须取消注释这一行:
##plt.plot(stock_vals['date'], stock_vals['exposure'], color='#191970', lw='0.5')
如您所见,顶部的图表再次显示正常。当我再次运行它(第四次运行)时,两个图表看起来都应该看起来像。第五轮将再次摧毁一切 - 冲洗并重复。
鉴于我知道解决问题的方法,我很惊讶为什么会这样。
答案 0 :(得分:2)
在单独的Axes个实例上获取句柄可能是朝着有用的方向迈出的一步:
def stock_save_img_run(k):
stock_vals = pd.read_csv('stock_vals_run_' + str(k) + '.csv', sep=';', encoding='utf-8-sig')
fig, (top_axes, bottom_axes) = plt.subplots(2, 1)
top_axes.plot(stock_vals['date'], stock_vals['stock_val'], color='#191970')
top_axes.plot(stock_vals['date'], stock_vals['protected_amt'], color='#191970', ls='dashed')
top_axes.stackplot(stock_vals['date'], stock_vals['exposure'] * stock_vals['stock_val'],
(1 - stock_vals['exposure']) * stock_vals['stock_val'], color=('gray'),
colors=('gray', 'silver'))
bottom_axes.plot(stock_vals['date'], stock_vals['exposure'], color='#191970', lw='0.5')
bottom_axes.set_ylabel('Exposure (in %)')
plt.savefig('chart_' + str(k) + '.png')
plt.show()
top_axes.cla()
bottom_axes.cla()
del stock_vals