使用带有不包含白色

时间:2017-12-03 06:35:16

标签: python matplotlib colors gradient

所以我有这个矩阵,定义如下:

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

SquareSize为185,零为条目的是圆内的点,条目为2是方形内但在圆外。 它们都映射到不同的颜色,其余颜色根据颜色渐变映射:

cmap = mpl.cm.hsv

使用以下方式绘制后:

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

这是输出:enter image description here

但是,我希望圆圈是白色的...这不是渐变颜色的一部分:(我该怎么做?

1 个答案:

答案 0 :(得分: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