Подтвердить что ты не робот

Зарисуйте черно-белую двоичную карту в matplotlib

Я использую python для моделирования некоторых моделей автоматизации, и с помощью matplotlib я создаю графики, подобные приведенным ниже.

enter image description here

В настоящее время я рисую следующую команду:

ax.imshow(self.g, cmap=map, interpolation='nearest')

где self.g - это двоичное отображение (0 → blue, 1 → red на моих текущих графиках).

Однако, чтобы включить это в мой отчет, я хотел бы, чтобы сюжет был с черными точками на белом фоне вместо красного на синем. Как это сделать?

4b9b3361

Ответ 1

Вы можете изменить цветовую карту, которую используете с помощью ключевого слова cmap. Цветовая карта 'Greys' обеспечивает необходимый эффект. Вы можете найти список доступных карт на scipy-сайте.

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(101)
g = np.floor(np.random.random((100, 100)) + .5)

plt.subplot(211)
plt.imshow(g)
plt.subplot(212)
plt.imshow(g, cmap='Greys',  interpolation='nearest')
plt.savefig('blkwht.png')

plt.show()

что приводит к:

enter image description here

Ответ 2

Существует альтернативный метод ответа Янна, который дает вам более точный контроль. Matplotlib imshow может принимать матрицу MxNx3, где каждая запись является значением цвета RGB - просто установите их в белый цвет [1,1,1] или черный [0,0,0] соответственно. Если вам нужны три цвета, легко расширить этот метод.

import matplotlib.pyplot as plt
import numpy as np

# Z is your data set
N = 100
Z = np.random.random((N,N))

# G is a NxNx3 matrix
G = np.zeros((N,N,3))

# Where we set the RGB for each pixel
G[Z>0.5] = [1,1,1]
G[Z<0.5] = [0,0,0]

plt.imshow(G,interpolation='nearest')
plt.show()

enter image description here