Как построить массив 0/1 с помощью matplotlib - PullRequest
1 голос
/ 17 июня 2020

Мне дан ввод матрицы 1/0. И я хочу изобразить это так: пример

Дело в том, что мне нужно покрасить все нули в синий цвет. но когда дана матрица только из единиц, она также становится синей. есть ли способ заставить цвет "придерживаться" определенного c числа?

кода, который я использовал:

cmap = ListedColormap(['b', 'g'])  
matrix=np.array(matrix,dtype=np.uint8) 
plt.imshow(matrix,cmap=cmap)

1 Ответ

1 голос
/ 17 июня 2020

Вы можете указать количество записей в палитре по умолчанию, используя метод ListedColormap, как вы думали, просто установите необязательный аргумент N = 2. Кроме того, определите минимальные и максимальные значения для ваших данных в методе imshow с помощью vmin и vmax.

import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import numpy as np

# Random matrix

data_ones = np.random.randint(1, 2, size=(8, 8))
data_both = np.random.randint(0, 2, size=(8, 8))

# Define colormap

cmapmine = ListedColormap(['b', 'w'], N=2)

# Plot matrix

fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.imshow(data_ones, cmap=cmapmine, vmin=0, vmax=1)
ax1.set_title('Ones')
ax2.imshow(data_both, cmap=cmapmine, vmin=0, vmax=1)
ax2.set_title('Zeros and Ones')
plt.show()

Какие графики: enter image description here

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