我一直在努力解决这个问题,所以这是我的版本:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from matplotlib.transforms import Bbox
# This is in PIXELS
# first tuple : coords of box' bottom-left corner, from the figure's bottom-left corner
# second tuple : coords of box' top-right corner, from the figure's bottom-left corner
clip_box = Bbox(((0,0),(300,300)))
circle = Circle((0,0),1)
plt.axis('equal')
plt.axis((-2,2,-2,2))
plt.axes().add_artist(circle)
# You have to call this after add_artist()
circle.set_clip_box(clip_box)
plt.show()
两个区别是框的坐标以像素为单位(?!),并且set_clip_box()
仅在之后才有效add_artists()
(这就是为什么clip_box=clip_box
不起作用)。我很想知道应该配置什么来让它在“轴单元”中工作。
对于后代,这是我用来解决此问题的黑客。它剪辑了所有内容,包括绘图、轴等:
for o in plt.findobj():
o.set_clip_on(True)
o.set_clip_box(clip_box)