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

问题描述 投票:0回答:2

在以下简单的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个)”。这是我遇到的最荒谬的编程错误之一!

python matplotlib
2个回答
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'

这样可以更容易地找出问题所在。

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


0
投票

我找到了缺少的成分:它是一个渲染器。例如。

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

这有效。然而,与此同时,我在评论员的帮助下发现,这个make_image函数没有任何实际用途,并且没有太多支持。必须通过其他方式获得图像处理,例如轴。

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

© www.soinside.com 2019 - 2024. All rights reserved.