Как построить изображение из матрицы подключения? - PullRequest
0 голосов
/ 19 декабря 2018

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

enter image description here

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

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

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

enter image description here

Ответы [ 3 ]

0 голосов
/ 19 декабря 2018

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

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

enter image description here

0 голосов
/ 19 декабря 2018

С тепловой картой 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')

enter image description here

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

0 голосов
/ 19 декабря 2018

Я бы предложил использовать 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)))

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

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