Python 如何在matplotlib中绘制矩形,宽度始终为X轴的10%,高度始终为1(Y轴的单位),即使在缩放/移动时也会粘在角上?
我研究了matplotlib.transforms模块,但还没有找到如何同时实现以下所有目标Python 如何在matplotlib中绘制矩形,宽度始终为X轴的10%,高度始终为1(Y轴的单位),即使在缩放/移动时也会粘在角上?,python,matplotlib,transform,Python,Matplotlib,Transform,我研究了matplotlib.transforms模块,但还没有找到如何同时实现以下所有目标 使用列表x和y中的x和y坐标绘制曲线 绘制一个固定在左下角的矩形(matplotlib.patches.rectangle) 矩形的宽度为水平轴的10%(xmax xmin) 高度为1,表示单位高度矩形 移动/缩放绘图时,矩形将固定在左下角 缩放时,矩形的宽度保持为水平轴0.1*(xmax xmin)的10% 缩放时,矩形的高度与y轴的变化一致 似乎在水平方向上,刻度和位置都在轴上。变速,这很容易做到。
有人知道这在不太深入matplotlib的情况下是否可行吗?您可以将
AnchoredOffsetbox
子类化,让艺术家“锚定”在轴的特定位置。看
演示代码:
导入matplotlib.pyplot作为plt
从matplotlib.patches导入矩形
从matplotlib.offsetbox导入offsetbox、AnchoredOffsetbox、AuxTransformBox
锚定角类(锚定角盒):
定义初始值(自、变换、宽度、高度、位置,**矩形kwds):
self._box=AuxTransformBox(转换)
self.rectangle=矩形((0,0),宽度,高度,**rect_-kwds)
self.\u box.add\u艺术家(self.rectangle)
super().uuuu init_uuuuuuuuu(loc,pad=0,borderpad=0,
child=self.\u框,frameon=False)
图,ax=plt.子批次()
r=锚定角(ax.get_yaxis_transform(),宽度=0.1,高度=1,
loc='左下角',颜色='绿色',alpha=0.5)
ax.添加艺术家(r)
ax.set_xlim(0,1)
ax.set_ylim(0,2)
plt.show()