我正在尝试向由熊猫生成的时间序列图添加几条垂直线,就像在this question中一样。但是,这些线应该在出现问题的时间序列图的后面之后绘制。
在一个最小的示例中,它可以与zorder
import datetime
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
iN = 50
data = pd.DataFrame(np.random.multivariate_normal([0, 0], [[2, 0], [0, 2]], 50), index=pd.date_range(start='1/1/2018', periods=iN))
fig, ax = plt.subplots()
data.plot(ax=ax, zorder=100)
ax.axvline(pd.to_datetime('30/1/2018'), color='k', zorder=0)
plt.show()
但是,在我的实际数字中,它不起作用,即垂直线都出现在时间序列的前面。是什么造成了这个问题?
fig, ax = plt.subplots(figsize=(10,5))
# plot
risk_index.plot(ax=ax, color=color, linewidth=0.2, zorder=100)
# events
ax.axvline(pd.to_datetime('30.04.2013', format='%d.%m.%Y'), linewidth=0.2, linestyle='--', color='k', zorder=0)
ax.axvline(pd.to_datetime('17.05.2013', format='%d.%m.%Y'), linewidth=0.2, linestyle='--', color='grey', zorder=0)
#Create custom artists
sectorArtists = [plt.Line2D((0,1),(0,0), color=i) for i in cmap]
handles, labels = ax.get_legend_handles_labels()
ax.legend(sectorArtists,items,loc='upper center',
ncol=len(items),
bbox_to_anchor=(0.5,-0.15), prop={'size':7})
# label
ax.tick_params(labelsize=7)
plt.ylim((risk_index.values.min()*1.05,risk_index.values.max()*1.05))
# output
fig.savefig(fig_output, dpi=700, bbox_inches="tight")
plt.close
请注意,risk_index
有27个时间序列,不仅有2个。使用matplotlib版本1.5.0。