Вертикальная линия за графиком временного ряда с zorder - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь добавить несколько вертикальных линий к графику временного ряда, сгенерированного пандами, как в этом вопросе . Тем не менее, предполагается, что линии нарисованы за графиком временного ряда, который создает проблему.

В минимальном примере это работает с 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...