Составьте черно-белую двоичную карту в matplotlib - PullRequest
25 голосов
/ 09 марта 2012

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

enter image description here

Сейчас я нахожусьпостроение с помощью следующей команды:

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

где self.g - двоичная карта (0 -> синяя, 1 -> красная на моих текущих графиках).

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

Ответы [ 2 ]

41 голосов
/ 09 марта 2012

Вы можете изменить используемую карту цветов с помощью ключевого слова 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

10 голосов
/ 09 марта 2012

Существует альтернативный метод ответа Янна, который дает вам более полный контроль. Матрица imshow Matplotlib может принимать матрицу 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

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