Matplotlib:make_image()莫名其妙的错误

时间:2018-07-05 21:48:23

标签: python matplotlib

在以下简单的matplotlib代码中:

IIS_IUSRS

我在上一条语句中收到以下莫名其妙的错误: “ TypeError:make_image()至少接受2个参数(给定1个)” 如果我使用参数,例如

,我会得到一个更加荒谬的错误
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,5,0.1)
y = np.sin(1.33*x)
x1, y1 = np.meshgrid(x, y)
data = np.sin(x1) + y1**4
im = plt.imshow(data)
x = im.make_image()
...

“ TypeError:make_image()至少接受2个参数(给定2个)” 。 这是我遇到过的最荒谬的编程错误之一!

2 个答案:

答案 0 :(得分:1)

例如参见this question为何会这样

TypeError: method() takes at least n arguments (n given)

不像乍一看那样荒谬。

您在这里调用make_image,而没有任何位置参数。 signature

make_image(renderer, magnification=1.0, unsampled=False)

因此您缺少renderer参数。

在python 3.6中,错误更加明显。它会说类似

TypeError: make_image() missing 1 required positional argument: 'renderer'

这使得更容易发现问题。

此外,对于所需的结果还不清楚,因此,这就是人们在这一点上可以说的。

答案 1 :(得分:0)

我发现了缺少的成分:它是渲染器。例如

r = plt.gcf().canvas.get_renderer()
x = im.make_image(r, magnification=2.0)

这有效。但是,与此同时,我在这里的注释器的帮助下发现,此make_image函数没有任何实际用途,并且对其的支持也不多。图像放大必须通过其他方式获得,例如轴。

所以我认为问题已经解决。谢谢。