带zorder的时间序列图后面的垂直线

时间:2019-01-02 13:20:04

标签: matplotlib

我正在尝试向由熊猫生成的时间序列图添加几条垂直线,就像在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。

0 个答案:

没有答案