matplotlib не соблюдает zorder - PullRequest
       16

matplotlib не соблюдает zorder

0 голосов
/ 03 августа 2020

Я просмотрел несколько сообщений (например, этот ), в которых обсуждалась zorder, и, судя по ответам, которые я просмотрел, похоже, что следующий небольшой воспроизводимый пример не должен рисовать сетку наверху бара. Или, другими словами, не должен ли тот факт, что линии сетки назначены ax2, имеющему меньший номер zorder, заставлять их рисоваться под полосой и треугольником? Как заставить линии сетки располагаться ниже всего остального?

import matplotlib.pyplot as plt

fig, ax1 = plt.subplots(figsize=(5, 4))
pts = ax1.plot(1, 1, 'r^', label='Stream Flow')
ax1.set_zorder(4)
ax1.set_facecolor('none')
ax1.set_xlim([0, 3])
ax1.set_ylim([0, 3])

ax2 = ax1.twinx()
ax2.set_xlim([0, 3])
ax2.set_ylim([0, 30])
bar = ax2.bar(1, 15, align='center', color='b', width=0.1, label='Some other value')
ax2.set_zorder(2)
ax2.set_ylabel(r'Other value', rotation=270, labelpad=15)
lns = pts + [bar]
labs = [l.get_label() for l in lns]
leg = ax2.legend(lns, labs, loc='lower right', frameon=True)
leg.get_frame().set_linewidth(0.0)
ax2.yaxis.grid(color='silver', zorder=1)

# Following two lines were experiments that failed
#fig.set_zorder(ax2.get_zorder()-1)
#fig.patch.set_visible(False)

plt.show()

Вот что я вижу: линии сетки нанесены поверх полосы (плохо), но ниже треугольника (хорошо). введите описание изображения здесь

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