Matplotlib скрыть некоторую часть прямоугольника - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь скрыть или удалить часть "external_rect", которая выходит за пределы "outer_arc_left" и "outer_arc_right", чтобы воссоздать каток.

Спасибо.

from matplotlib.patches import Rectangle, Arc

def draw_rink(ax=None, color='black', lw=2, outer_lines=False):
    if ax is None:
        ax = plt.gca()
    outer_rect = Rectangle((-1500, 3000), 3000, 3000, linewidth=lw, color=color, fill=False)
    outer_arc_left = Arc((-700, 5200), 1600, 1600, theta1=90, theta2=180, linewidth=lw, color=color)
    outer_arc_right = Arc((700, 5200), 1600, 1600, theta1=0, theta2=90, linewidth=lw, color=color)
    rink_elements = [outer_rect, outer_arc_left, outer_arc_right]
    for element in rink_elements:
        ax.add_patch(element)
    return ax

1 Ответ

1 голос
/ 17 марта 2019

Трудно «спрятать часть патча», если нет четкого определения, какую часть спрятать.Вы можете создать путь и использовать его как clip_path, но он действует больше как маска, и, например, края прямоугольника будут обрезаны.Определение этого пути будет непростым делом.

Но мы можем изменить это на обратное: если вам в любом случае нужно определить путь, вы можете просто использовать этот путь в качестве фигуры, которую хотите показать.

import matplotlib.pyplot as plt
from matplotlib.path import Path
from matplotlib.patches import PathPatch

x = [1,1,1,2,3,4,4,4,1]
y = [0,1,2,2,2,2,1,0,0]
verts = list(zip(x,y))
codes = [1,2,3,3,2,3,3,2,2]
path = Path(verts,codes)
patch = PathPatch(path)
plt.gca().add_patch(patch)

plt.gca().autoscale()
plt.show()

enter image description here

...