Matplotlib: make_image () необъяснимая ошибка - PullRequest
0 голосов
/ 06 июля 2018

В следующем простом коде 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()
...

В последнем утверждении я получаю следующую необъяснимую ошибку: «Ошибка типа: make_image () принимает как минимум 2 аргумента (1 дано)» И я получаю еще более нелепую ошибку, если использую аргумент, например

x = im.make_image(magnification=2.0)

"Ошибка типа: make_image () принимает как минимум 2 аргумента (задано 2)" . Это одна из самых нелепых ошибок программирования, с которыми я когда-либо сталкивался!

Ответы [ 2 ]

0 голосов
/ 11 июля 2018

Я нашел недостающий ингредиент: рендер . Э.Г.

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

Это работает. Между тем, однако, с помощью комментатора я обнаружил, что эта make_image функция не имеет никакого реального применения и не очень поддерживается. Начало изображения должно быть получено другими способами, например, оси.

Так что я считаю вопрос решенным. Спасибо.

0 голосов
/ 06 июля 2018

См. Например этот вопрос почему-то как

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'

, который позволяет легче выяснить проблему.

Кроме того, остается неясным вопрос о желаемом результате, так что об этом можно сказать на данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...