Python 如何创建专门处理一个值的matplotlib colormap?
如何创建将Python 如何创建专门处理一个值的matplotlib colormap?,python,matplotlib,Python,Matplotlib,如何创建将0(且仅0)映射为白色和任何其他值0(我将用黑色作为颜色来区分默认部分的默认值)。 您的意思是将vmin设置为0+eps吗?你能检查一下我的编辑吗?当然可以!(如果使用vmin=0,它将无法工作)感谢您的帮助!将此问题标记为重复,如果您愿意,您可以恢复我的接近投票,并以另一种方式关闭重复投票。@tcaswell-我不担心这样或那样。它们都是很好的答案(尽管是重复的)。让我们把这个关上。我不认为这是一个真正的复制品,因为问题要求替换其中一个关卡的颜色。我不会重新讨论这个问题,但对于那些确
0
(且仅0
)映射为白色和任何其他值0cmap。在('white')
下设置_,然后将vmin
设置为0+eps
例如:
import matplotlib.pyplot as plt
import numpy as np
cmap = plt.get_cmap('rainbow')
cmap.set_under('white') # Color for values less than vmin
data = np.random.random((10, 10))
data[3:5, 7:] = 0
# Very small float such that 0.0 != 0 + eps
eps = np.spacing(0.0)
fig, ax = plt.subplots()
im = ax.imshow(data, interpolation='nearest', vmin=eps, cmap=cmap)
fig.colorbar(im, extend='min')
plt.show()
但是,如果0位于数据范围的中间,则可以屏蔽值并设置颜色:<代码> cMAP.StIdBase< /Cord>(我将用黑色作为颜色来区分默认部分的默认值)。
您的意思是将vmin设置为0+eps吗?你能检查一下我的编辑吗?当然可以!(如果使用
vmin=0
,它将无法工作)感谢您的帮助!将此问题标记为重复,如果您愿意,您可以恢复我的接近投票,并以另一种方式关闭重复投票。@tcaswell-我不担心这样或那样。它们都是很好的答案(尽管是重复的)。让我们把这个关上。我不认为这是一个真正的复制品,因为问题要求替换其中一个关卡的颜色。我不会重新讨论这个问题,但对于那些确实希望在彩色地图中使用不同颜色的人,请参见例如“如何使用不同颜色”一文。这确实是一个重复的问题,但这里的答案要好得多<代码>vmin=0.001不是好的英语。我必须始终记住矩阵中的最小非零值可能是多少。你是说答案的相关部分是0+eps
?我把它们按时间顺序重复标记,@JoeKington有权重新排序,如果你有重大抗议,可以向meta上诉。(我同意乔的答案是一个更好的答案(并且投票)!)TasCWELL根本没有抗议,我刚才提到,我认为乔的答案更有用,因为它显示了如何使用<代码> EPS (我不知道),它给出了一个解决方案,当<代码> 0 /代码>在中间时。添加了一个链接,我直到现在才意识到另一个答案是你写的。它也是一个非常有用的工具,我不是故意说它不是。感谢添加链接!我的观点是,对于那些找到你的答案的人来说,也可以看到eps
技巧(以防他们像我一样搞不懂)。
import matplotlib.pyplot as plt
import numpy as np
cmap = plt.get_cmap('rainbow')
cmap.set_bad('black')
data = np.random.normal(0, 1, (10, 10))
data[3:5, 7:] = 0
data = np.ma.masked_equal(data, 0)
fig, ax = plt.subplots()
im = ax.imshow(data, interpolation='nearest', cmap=cmap)
fig.colorbar(im)
plt.show()