gpt4 book ai didi

python - 未调用函数中的 pyplot.gca() 生成另一个子图

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:41 25 4
gpt4 key购买 nike

我的代码中有一个函数,它需要一个 Axes 实例来绘制。我想将默认值设置为当前轴。这导致以下代码:

from matplotlib import pyplot as plt

def plotfunc(ax=plt.gca()):
# Here I would usually plot some functions on ax
return True

plt.figure()
plt.show()

我对这个脚本的期望是出现一个空白图形。但我得到的是一个数字和另一个空的子图,尽管我什至没有调用plotfunc。当我删除代码中的“=plt.cga()”部分时,附加的子图不会出现。有没有办法将 pltgca() 设置为plotfunc的标准轴而不获取另一个子图?

我在 Ubuntu 18.04.1 下使用 python 3.6。

最佳答案

在Python中,函数的默认关键字参数是在函数的定义期间设置的(而不是调用时间)。那么当您运行该脚本时会发生什么:

  1. 导入已执行
  2. plotfunc 定义 -> plt.gca() 执行,返回值绑定(bind)到 ax 的默认值<
  3. plt.figure() 被执行
  4. plt.show() 被执行

即使从未调用该函数,也会设置默认关键字参数并创建相应的Axes(和图形)。然后 plt.figure() 显式创建一个新图形,即您看到的第二个图形。

您应该将哨兵值设置为ax,如ax=None,然后覆盖如果ax为None:ax = plt.gca() 位于函数内部,仅在函数调用时发生。

关于python - 未调用函数中的 pyplot.gca() 生成另一个子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52972319/

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