pyplot.contourf () возвращает ошибку при указании аргумента уровней - PullRequest
0 голосов
/ 10 ноября 2018

РЕДАКТИРОВАТЬ: проблема, скорее всего, о версии. Аргумент levels принимает целочисленный аргумент в версии 3.0.0, хотя эта проблема возникла при использовании версии 2.2.2.

ОБНОВЛЕНИЕ: проблема не возникла после установки версии> = 3.0.0.

Я пытаюсь создать контурный график в Python, используя функцию matplotlib.pyplot.contourf(), и она отлично работает так:

plt.contourf(x, y, z)

но когда я пытаюсь указать целое число для аргумента уровней, например:

plt.contourf(x, y, z, levels=100)

всегда возвращает ошибку: TypeError: len() of unsized object

В документации говорится, что аргумент levels может быть либо int, либо array_like, поэтому я не знаю, почему он вызвал бы функцию len()

Любые идеи, почему это происходит, и любые предложения о том, как это исправить?

1 Ответ

0 голосов
/ 11 ноября 2018

Извините, это происходит с вами. Документация изменилась в версии 2.2.3 без полной реализации этой функции. Поэтому в зависимости от версии matplotlib аргумент levels интерпретируется по-разному.

matplotlib <3.0.0 </strong>

levels интерпретируется как список уровней для рисования контуров. Целое число интерпретируется как один уровень. Для графика contourf (закрашенный контур) вам нужно как минимум два уровня. Используйте ранее известный способ для указания количества уровней в качестве второго или четвертого безымянного аргумента

plt.contourf(z, 100)
plt.contourf(x, y, z, 100)

matplotlib> = 3.0.0

levels может принимать либо список, либо целое число. Когда целое число, оно обозначает (приблизительное [*]) количество уровней. Соответствующий PR - это .

plt.contourf(z, levels=100)
plt.contourf(x, y, z, levels=100)
...