首页 > 解决方案 > Matplotlib:make_image() 莫名其妙的错误

问题描述

在以下简单的 matplotlib 代码中:

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 个参数(给定 1 个)” 如果我使用参数,我会得到一个更荒谬的错误,例如

x = im.make_image(magnification=2.0)

“TypeError: make_image() 至少需要 2 个参数(给定 2 个)”。这是我遇到过的最可笑的编程错误之一!

标签: pythonmatplotlib

解决方案


请参阅例如这个问题,了解为什么类似

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

并不像乍看起来那么荒谬。

在这里,您在make_image没有任何位置参数的情况下调用。然而,签名

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

所以你错过了这个renderer论点。

在 python 3.6 中,错误更清楚一些。它会说类似

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

这允许更容易地找出问题。

除了这个问题还不清楚期望的结果是什么,所以这就是人们在这一点上可以说的。


推荐阅读