在以下简单的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个)” 。 这是我遇到过的最荒谬的编程错误之一!
答案 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
函数没有任何实际用途,并且对其的支持也不多。图像放大必须通过其他方式获得,例如轴。
所以我认为问题已经解决。谢谢。