Создать NonUniformImage на основе массива Numpy 2d с настраиваемой шириной и высотой ячейки - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь создать «тепловую карту» с Matplotlib из 2d Numpy Array и нашел опцию NonUniformImage здесь . Ниже приведена простая одиночная версия. К сожалению, я не могу изменить х без изменения у. Ошибка Pyhton Propmpts: Axes don't match array shape

Воспроизводимый пример

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.image import NonUniformImage
from matplotlib import cm

x = np.arange(6)
y = np.arange(6)
z = x[:, np.newaxis].dot(y[:, np.newaxis].transpose())

fig, ax = plt.subplots()
im = NonUniformImage(ax, interpolation='nearest', extent=(0, len(x)-1, 0, len(y)-1))
im.set_data(x, y, z)
ax.images.append(im)
ax.set_xlim(0, len(x)-1)
ax.set_ylim(0, len(y)-1)

Моя цель - построить карту на основе массива Numpy 2d с «пользовательскими ячейками сетки». Это означает, что я могу назначить x и y с неправильными рядами (например, np.array([0.5,3,8,15,15.4]). Я знаю, что x и y, которые назначаются, представляют центр ячейки, поэтому последнее, что я хотел бы решить, это то, что график полностью виден ( если это возможно).

Как сделать изображение, которое имеет другое ограничение (не квадратное) с настраиваемой шириной и высотой в зависимости от двух списков?

1 Ответ

1 голос
/ 09 мая 2019

Полагаю, вы ошиблись, определив z. Возможно, что вы ищете, это

x = np.arange(6)
y = np.arange(8)
z = x[np.newaxis,:] * y[:, np.newaxis]
print(z.shape)

такой, что форма (8,6).

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