Обрезка осей с патчем - PullRequest
       16

Обрезка осей с патчем

0 голосов
/ 24 декабря 2018

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

import matplotlib.pyplot as plt
from matplotlib import patches
import numpy as np

fig = plt.figure()

X, Y = np.mgrid[-1:1:.1, -1:1:.1]
Z = X+Y

ax1 = fig.add_subplot(111)
ax1.contourf(X, Y, Z)

frame = patches.Rectangle(
        (-.1,-.1), 1.2, 1.2, transform=ax1.transAxes, alpha=.5, fc='b', fill=True, linewidth=3, color='k'
    )
ax1.set_clip_path(frame) # has no effect
fig.patches.append(frame)

fig.show()

enter image description here

Как мне правильно настроить это?Документация очень не хватает.

1 Ответ

0 голосов
/ 24 декабря 2018

Все, что вам нужно сделать, это предоставить zorder, чтобы поместить его в фон.В частности, zorder=0 в данном случае для вашего Rectangle патча.

Думайте о zorder как о параметре, который решает, что укладывается поверх чего.zorder=0 просто отправит патч наименьший в стеке, что означает самый задний слой графика.

frame = patches.Rectangle(
        (-.1,-.1), 1.2, 1.2, transform=ax1.transAxes, alpha=.5, fc='b', fill=True, linewidth=3, color='k'
    , zorder=0) # <--- zorder specified here
ax1.set_clip_path(frame) # has no effect
fig.patches.append(frame)

enter image description here

...