我的代码中有一个函数需要一个Axes实例进行绘制。我想将默认设置为当前轴。这导致了Followig代码:
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
答案 0 :(得分:0)
在python中,函数的默认关键字参数是在函数的定义期间设置的(与 call 时间相反)。因此,运行该脚本时会发生以下情况:
plotfunc
被定义-> plt.gca()
被执行并且返回值被绑定到默认值ax
plt.figure()
被执行plt.show()
被执行即使从不调用该函数,也将设置默认的关键字参数并创建相应的Axes
(和图形)。然后plt.figure()
显式创建一个新图形,即您看到的第二个图形。
您应像在ax
中那样将哨兵值设置为ax=None
,然后在函数内覆盖if ax is None: ax = plt.gca()
,这仅在函数调用时发生。
答案 1 :(得分:0)
如果没有给出轴,则通常允许将轴提供给功能并退回到“当前轴”的方法
def plotfunc(ax=None):
ax = ax or plt.gca()
# plot something to ax
ax.plot(...)