python - 当传递命名参数时,matplotlib 不会绘图

标签 python matplotlib

有人可以解释一下这种行为吗?

import matplotlib.pyplot as plt
plt.plot(x=[0.05, 0.1, 0.15], y=[102, 211, 393])
plt.show()

No output!

import matplotlib.pyplot as plt
plt.plot([0.05, 0.1, 0.15], [102, 211, 393])
plt.show()

With output!

也就是说,在不明确指定 x=y= 的情况下,pyplot 可以正常工作。但是,这与 the documentation 中的行为不同。 。嗯,文档没有明确使用 x=y=,但它给出了 plot 的签名为 plot(x, y)。因此,应该允许命名参数,并产生相同的结果,对吗?

最佳答案

我认为困惑来自于签名的差异。这是一个Python问题。

考虑

def func1(x,y):
    print(x,y)

def func2(*args):
    print(args)

您可以使用位置参数调用它们中的每一个。

func1(1,2)
func2(1,2)

您还可以使用命名参数调用第一个函数。

func1(x=1, y=2)

但是,您无法使用命名参数调用第二个函数,因为 xy 尚未定义。

func2(x=1, y=2)

导致错误。

plot的文档中可以看出,它使用了第二种定义函数的方式,

matplotlib.pyplot.plot(*args, **kwargs)

我认为 matplotlib 文档需要假设有一些基本的 Python 理解,但如果可以做一些事情来澄清它,请随时提出改进建议。

关于python - 当传递命名参数时,matplotlib 不会绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50285820/

相关文章:

python - 我什么时候应该使用 *args?

python - 我的 FB HackerCup 代码对大输入太慢了

python - 为什么 Python 默认不符合 JSON 标准 (rfc7159)?

python - 使用标签在数据透视表中绘图

python - pyplot 在图例中组合多个线标签

python - matplotlib 中带有欧元符号的刻度

python - 如何使用 pandas tz_convert 转换为多个不同的时区

python - 为什么 str.format() 比 str() 更好?

python - Matplotlib:未对齐的颜色条刻度线?

python - 使用 Series.plot() 绘制每小时数据