Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建专门处理一个值的matplotlib colormap?_Python_Matplotlib - Fatal编程技术网

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()