我正在努力创建matplotlib axvspan
(或axhspan
)来处理变换后的坐标,但我不能。特别是,我想将ymin
和ymax
定义为在transData
坐标中工作,而不是在transAxes
坐标中工作下面是我的测试代码(我的目标是在y=0
和y=1
处的水平线之间绘制红色和蓝色背景):
import matplotlib.transforms as transforms
fig, ax = plt.subplots()
ax.set_ylim([-1, 2])
ax.set_xlim([0, 15])
ax.axhline(y=0)
ax.axhline(y=1)
# tried different ways to do this.
trans = transforms.blended_transform_factory(ax.transData, ax.transData)
ax.axvspan(8, 10, ymin=0, ymax=1, transform=trans, alpha=0.1, color='blue')
ax.axvspan(10, 12, ymin=0.1, ymax=0.8, transform=(ax.transData, ax.transData), alpha=0.5, color='red')
plt.show()
输出如下所示:
注意:我知道如何使用patches.rectangle
来实现,但是我希望使用axvspan
来实现(或者理解为什么不能)
1条答案
按热度按时间m4pnthwp1#
我还使用反转的 y 轴测试了此方法,它在两种情况下都有效