我尝试使用Matplotlib中的剪切功能剪切圆形和椭圆形等形状,但肯定遗漏了什么。为什么这不会将圆形剪切为两半?:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from matplotlib.transforms import Bbox
clip_box = Bbox(((-2,-2),(2,0)))
circle = Circle((0,0),1,clip_box=clip_box,clip_on=True)
plt.axes().add_artist(circle)
plt.axis('equal')
plt.axis((-2,2,-2,2))
plt.show()
2条答案
按热度按时间jdzmm42g1#
我不知道为什么你的代码不工作,但是,下面的代码片段的工作正如你所期望的。
根据我的理解,clip_on与对形状应用给定的剪切无关,而是与形状是否应该在显示区域中剪切有关。
g52tjvyc2#
我一直在纠结这个问题,所以我的版本是:
两个不同之处在于框的坐标是以像素(?!)为单位的,而
set_clip_box()
只在add_artists()
之后工作(这就是clip_box=clip_box
不工作的原因)。我很想知道应该配置什么来让它以“轴单位”工作。下面是我用来解决这个问题的黑客技术,它可以剪辑所有内容,包括图表、坐标轴等: