为什么在pyplot中不能显式地将参数作为x和y传递?

11

我正在使用导入为plt的matplotlib.pyplot模块进行绘图。

在plt.plot()语句中,如果我将参数作为"x=array1,y=array2"传递,则会出现"TypeError:plot得到了意外的关键字参数'x'"。

如果我只是简单地传递"array1和array2",而不明确说明它们对应于x和y轴,则代码将被正确执行。

为什么会这样?


欢迎来到SE。您能展示一下如何定义数组吗?没有代码我们无法回答这个问题。 - E. Sommer
当然。希望下面的内容是所要求的。 - Srinivas
array1 = np.array([4.7,4.5,4.9,4,4.6]) array2 = np.array([1.4,1.5,1.5,1.3,1.5]) - Srinivas
2个回答

5
如果你查看函数定义,可以在这里找到https://github.com/matplotlib/matplotlib/blob/9a24fb724331f50baf0da4d17188860357d328a9/lib/matplotlib/axes/_axes.py#L72,你会看到那里有一个星号,使用它不能用于非可选参数的关键字。请参见Python args 和 kwargs:简介
def plot(self, *args, scalex=True, scaley=True, data=None, **kwargs):
        """
        Plot y versus x as lines and/or markers.
        Call signatures::
            plot([x], y, [fmt], *, data=None, **kwargs)
            plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

1
哦,好的,谢谢。虽然我不完全理解函数体中的内容,但我猜对于默认参数如x和y,像x和y这样的关键字是未定义的。也许目标是减少代码量。 - Srinivas

4
这与Python中的*args**kwargs概念有关。这两者都允许您在函数中使用可变数量的参数,但区别在于,*args只接受值,而**kwargs也接受关键字,因为名称“kw”的含义。
由于matplotlib.pyplot.plot()函数使用*args而不是**kwargs,因此这些函数不接受参数中的关键字。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接