2015-02-14 5 views
3

Предположим, что у меня есть матрица 10x10, которая состоит или только 0s и 1s, представленная в виде списка списков. Как я мог использовать matplotlib для представления такой матрицы как сетки красных и черных квадратов? (красный для 1, черный для 0).matplotlib: бинарный график тепла

Я искал экстенсивно, но самое близкое, что я мог найти, было Plot a black-and-white binary map in matplotlib, но цвета - поплавки меньше 1. Как только я получу 1 с в данных, график идет не так. Может ли кто-нибудь помочь? Или указать на конкретную документацию matplotlib, которая поможет мне преодолеть это?

+0

Этот вопрос связан: http://stackoverflow.com/questions/9707676/defining-a-discrete-colormap-for- imshow-in-matplotlib/ – cel

ответ

6

Вам нужно то, что известно как ListedColorMap:

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib as mpl 

# random data 
x = np.random.random_integers(0, 1, (10, 10)) 

fig, ax = plt.subplots() 

# define the colors 
cmap = mpl.colors.ListedColormap(['r', 'k']) 

# create a normalize object the describes the limits of 
# each color 
bounds = [0., 0.5, 1.] 
norm = mpl.colors.BoundaryNorm(bounds, cmap.N) 

# plot it 
ax.imshow(x, interpolation='none', cmap=cmap, norm=norm) 

enter image description here

+2

Существует также ['from_levels_and_colors'] (http://matplotlib.org/api/colors_api.html#matplotlib.colors.from_levels_and_colors), если вы хотите функцию, которая генерирует цветовую палитру и норму одним выстрелом. Например. 'cmap, norm = from_levels_and_colors ([0, 0.5, 1], ['r', 'k'])' –

+0

очень круто @JoeKington! Не имел представления. –

+0

@JoeKington Я также не знал, что функция существует ... – tacaswell

Смежные вопросы