В приведенном ниже коде я рисую линию, а затем наношу над ней непрозрачный участок (альфа=1). Я ожидаю, что часть линии, закрытая патчем, будет скрыта, но при этом видно, что линия была нанесена после патча. Как его изменить, чтобы линия не просвечивала?
Код был адаптирован из этого примера matplotlib
import matplotlib.path as mpath
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
Path = mpath.Path
path_data = [
(Path.MOVETO, (1.58, -2.57)),
(Path.CURVE4, (0.35, -1.1)),
(Path.CURVE4, (-1.75, 2.0)),
(Path.CURVE4, (0.375, 2.0)),
(Path.LINETO, (0.85, 1.15)),
(Path.CURVE4, (2.2, 3.2)),
(Path.CURVE4, (3, 0.05)),
(Path.CURVE4, (2.0, -0.5)),
(Path.CLOSEPOLY, (1.58, -2.57)),
]
codes, verts = zip(*path_data)
path = mpath.Path(verts, codes)
# plot control points and connecting lines
x, y = zip(*path.vertices)
y2 = [_y-1 for _y in y]
line, = ax.plot(x, y2, 'go-')
patch = mpatches.PathPatch(path, facecolor='r', alpha=1)
ax.add_patch(patch)
ax.grid()
ax.axis('equal')
plt.show()
Вы можете указать порядок z вашего патча (зеленая линия имеет zorder
2, поэтому все, что > 2, будет работать):
patch = mpatches.PathPatch(path, facecolor='r', alpha=1, zorder=5)