gpt4 book ai didi

python - set_position() 后的 matplotlib twinx 奇怪行为

转载 作者:行者123 更新时间:2023-12-04 09:34:19 25 4
gpt4 key购买 nike

我正在开发一个功能,可以让我轻松地在绘图中的任意位置添加寄生虫轴,但我遇到了一个奇怪的情况。看看下面的代码:

import matplotlib.pyplot as plt

plt.plot()
plt.gca().set_position([1/3, 1/3, 1/3, 1/3])
plt.gca().twinx()

plt.show()

以上代码产生下图: enter image description here

如您所见,双胞胎图是使用主图的旧位置生成的。我原以为 twinx 图会在主图的新位置上生成。

如何在主图的新位置上绘制双胞胎图? (我知道事先绘制 twinx 图“解决”了这个问题,但这不是一个实际的解决方案)

感谢您的帮助!

最佳答案

我通过反复试验找到了解决问题的方法。但是,应该注意的是,我不知道 twinx 是如何工作的,而且我是 matplotlib 的初学者,所以我肯定无法理解正在发生的任何事情。

为了解决这个问题,我在创建 twinx 之前使用了 plt.gcf().subplots_adjust()。但是,这样做实际上会破坏新位置,因此我事先保存了它们以便能够在创建 twinx 后重新应用它们。代码变为:

import matplotlib.pyplot as plt

plt.plot()
plt.gca().set_position([1/3, 1/3, 1/3, 1/3])
pos = plt.gca().get_position() #added line
plt.gcf().subplots_adjust() #added line
plt.gca().twinx()
plt.gca().set_position(pos) #added line

plt.show()

不过,我仍然愿意阅读比我的更好的答案,所以请随时提出您的建议!

注意:上面的代码看起来很愚蠢(我设置位置只是为了重置它然后稍后重新应用它),但在我的实际应用程序中,第一个 set_position 将由较早的函数调用执行,而稍后的函数调用需要添加 twinx,因此这确实有一个用例。

关于python - set_position() 后的 matplotlib twinx 奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62667696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com