【问题标题】:Setting background color to white when using cmap with a gradient that doesn't contains white将 cmap 与不包含白色的渐变一起使用时将背景颜色设置为白色
【发布时间】:2018-05-16 21:21:32
【问题描述】:

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

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)

这是输出:

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

【问题讨论】:

    标签: python matplotlib colors gradient


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 2021-03-23
      • 2019-07-27
      • 1970-01-01
      • 2014-01-19
      • 2020-10-12
      • 1970-01-01
      相关资源
      最近更新 更多