Итак, у меня есть эта матрица, которая определяется следующим образом:

for row in range (0,squareSize):
            for col in range (0,squareSize):
                if new_matrix[row][col]==1:
                    new_matrix[row][col]=color_matrix[row][col] #gradient given by values in color_matrix 
                if new_matrix[row][col]==2:
                    new_matrix[row][col]=150 #color red
                if new_matrix[row][col]==0:
                    new_matrix[row][col]=100 #color purple

Квабализировали 185, записи, которые равны нулю, являются точками внутри круга, а вторых, которые являются 2, являются теми внутри квадрата, но за пределами круга. Оба их сопоставлены на разные цвета, а остальные сопоставлены в соответствии с градиентом цвета:

cmap = mpl.cm.hsv

После построения графика с использованием:

plt.matshow(new_matrix, interpolation='nearest',cmap=cmap)

Это вывод: Введите описание изображения здесь python matplotlib colors gradient

0
Caterina 3 Дек 2017 в 09:35

1 ответ

Лучший ответ

Вы можете установить те значения, которые будут белыми, на NaN. Это предотвратит их отрисовку вообще, так что в этих областях будет отображаться цвет фона. По умолчанию фон белый, поэтому они будут белыми.

import matplotlib.pyplot as plt
import numpy as np

x,y=np.meshgrid(np.arange(185),np.arange(185))
data = np.exp(-((x-185//2)**2+(y-185//2)**2)/60.**2)

data[(x-185//2)**2+(y-185//2)**2 > 80**2 ] = np.nan

plt.imshow(data, cmap=plt.cm.hsv)
plt.colorbar()
plt.show()

enter image description here

1
ImportanceOfBeingErnest 3 Дек 2017 в 14:12