Как построить изображение из матрицы подключения?

Я хочу написать скрипт для создания изображения из матрицы подключения. По сути, везде, где есть "1" в матрице, я хочу, чтобы эта область была затенена на изображении. Например, -

Я создал это изображение с помощью Photoshop. Но у меня есть большой набор данных, поэтому мне придется автоматизировать процесс. Было бы очень полезно, если бы кто-нибудь мог указать мне правильное направление.

РЕДАКТИРОВАТЬ

Вот изображение, которое я получаю после использования скрипта. Это связано с тем, что матрица большая (19 х 19). Можно ли как-то улучшить видимость этого изображения, чтобы черно-белые рамки выглядели более четкими?

3 ответа

Я бы предложил использовать opencv в сочетании с numpy в этом случае. Создать двухмерный numpy.array из dtype='uint8' с 0 для черного и 255 для белых. Например, чтобы получить массив 2x2 с белым левым верхним, белым правым нижним, черным левым нижним и черным правым верхним, вы можете использовать код:

myarray = numpy.array([[255,0],[0,255]],dtype='uint8')

Затем вы можете сохранить этот массив как изображение с opencv2 следующим образом:

cv2.imwrite('image.bmp',myarray)

В которой каждая ячейка массива представлена ​​одним пикселем, однако, если вы хотите увеличить масштаб (например, каждая ячейка представлена ​​квадратом 5x5), вы можете использовать numpy.kron функция, со следующей строкой:

myarray = numpy.kron(myarray, numpy.ones((5,5)))

перед написанием изображения

Может быть, вы можете попробовать это!

import matplotlib.cm as cm 
# Display matrix
plt.imshow(np.random.choice([0, 1], size=100).reshape((10, 10)),cmap=cm.binary)

С тепловой картой Seaborn:

import seaborn as sns
np.random.seed(3)
sns.set()
data = np.random.choice([0, 1], size=(16,16), p=[3./4, 1./4])
ax = sns.heatmap(data, square=True, xticklabels=False, yticklabels=False, cbar=False, linewidths=.8, linecolor='lightgray', cmap='gray_r')

Обратите внимание на обратную цветовую карту gray_r иметь черный для 1 и белый для 0.

Другие вопросы по тегам