Как сохранить нанесенную линию под патчем?

#python #matplotlib

#python #matplotlib

Вопрос:

В приведенном ниже коде я строю линию, затем я строю непрозрачный патч (альфа = 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()
 

Ответ №1:

Вы можете указать порядок z вашего патча (в зеленой строке zorder указано 2, поэтому будет работать все, что> 2):

 patch = mpatches.PathPatch(path, facecolor='r', alpha=1, zorder=5)
 

введите описание изображения здесь