Зарисуйте черно-белую двоичную карту в matplotlib
Я использую python для моделирования некоторых моделей автоматизации, и с помощью matplotlib я создаю графики, подобные приведенным ниже.
![enter image description here]()
В настоящее время я рисую следующую команду:
ax.imshow(self.g, cmap=map, interpolation='nearest')
где self.g
- это двоичное отображение (0
→ blue, 1
→ red на моих текущих графиках).
Однако, чтобы включить это в мой отчет, я хотел бы, чтобы сюжет был с черными точками на белом фоне вместо красного на синем. Как это сделать?
Ответы
Ответ 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]()