将 cmap 与不包含白色的渐变一起使用时将背景颜色设置为白色
Setting background color to white when using cmap with a gradient that doesn't contains white
所以我有这个矩阵,定义如下:
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,为0的项为圆内的点,为2的项为方内圆外的点。
两者都映射到不同的颜色,其余的根据给定的颜色渐变映射:
cmap = mpl.cm.hsv
绘制后使用:
plt.matshow(new_matrix, interpolation='nearest',cmap=cmap)
这是输出:
但是,我希望圆圈是白色的...这不是渐变颜色的一部分:(我该怎么做?
您可以将想要显示为白色的那些值设置为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()
所以我有这个矩阵,定义如下:
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,为0的项为圆内的点,为2的项为方内圆外的点。 两者都映射到不同的颜色,其余的根据给定的颜色渐变映射:
cmap = mpl.cm.hsv
绘制后使用:
plt.matshow(new_matrix, interpolation='nearest',cmap=cmap)
这是输出:
但是,我希望圆圈是白色的...这不是渐变颜色的一部分:(我该怎么做?
您可以将想要显示为白色的那些值设置为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()