【发布时间】:2016-08-27 14:32:12
【问题描述】:
我有以下绘图函数来保存随机游走输入股票投资组合):
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')
如您所见,顶部的图表看起来又正常了。当我再次运行它(第四次运行)时,两个图表看起来都应该看起来像。第五次运行将再次破坏一切 - 冲洗并重复。
鉴于我知道解决问题的解决方法,我对为什么会发生这种情况感到惊讶。
【问题讨论】:
-
您确定需要
plt.stackplot命令中的第一个color=('gray')吗? -
plt.*函数在“当前轴”上运行。除非您在终端中输入命令,否则最好保留对Axes对象的引用并直接对其进行操作。
标签: python matplotlib stacked-area-chart