0

这个答案很好地展示了如何反转 y 轴。但是,我现在希望针对这个反转版本的坐标系绘制我所有的点等。

我发现以下都达不到这个目的:

plt.figure()
plt.gca().invert_yaxis()
plt.plot([1,2],[1,3]) # just a random line


plt.figure()
plt.plot([1,2],[1,3]) # just a random line
plt.gca().invert_yaxis()

我该如何修复它并让它工作?


对我来说,如果我使用 OOP 风格的人物,即

fig = plt.figure()
axes = fig.add_axes([0.1, 0.1, 0.8, 0.8])
axes.plot([1,2],[1,3]) # just a random line
axes.invert_yaxis()

有用。

但是对于上面列出的当前两种非 OOP 样式,创建了一个带有反转 y 轴的新图形,但该线不存在。

4

1 回答 1

1

我仍然无法使用您发布的代码片段重现您的原始错误(这真的是您的所有代码吗?),但是您所描述的听起来可能是由于您plt.gca()连续两次快速调用时的竞争条件引起的。您也许可以尝试在绘制两个数字之间插入一个短暂的停顿:

import time

plt.figure()
plt.gca().invert_yaxis()
plt.plot([1,2],[1,3]) # just a random line

time.sleep(0.1)

plt.figure()
plt.plot([1,2],[1,3]) # just a random line
plt.gca().invert_yaxis()

但是,作为更一般的观点,我强烈建议您避免在交互式会话期间使用gca()and,gcf()除非是为了方便 - 显式传递轴或图形对象更加 Pythonic,并且它可以更轻松地准确跟踪哪些轴/数字正在修改。

于 2013-10-08T09:55:32.770 回答