我有一个简单的图像,我在matplotlib中使用imshow显示。我想应用一个自定义的色彩Map表,以便0-5之间的值是白色,5-10是红色(非常简单的颜色),等等。我已经尝试过遵循本教程:
http://assorted-experience.blogspot.com/2007/07/custom-colormaps.html,代码如下:
cdict = {
'red' : ((0., 0., 0.), (0.5, 0.25, 0.25), (1., 1., 1.)),
'green': ((0., 1., 1.), (0.7, 0.0, 0.5), (1., 1., 1.)),
'blue' : ((0., 1., 1.), (0.5, 0.0, 0.0), (1., 1., 1.))
}
my_cmap = mpl.colors.LinearSegmentedColormap('my_colormap', cdict, 3)
plt.imshow(num_stars, extent=(min(x), max(x), min(y), max(y)), cmap=my_cmap)
plt.show()
但这最终显示出奇怪的颜色,我只需要3-4种我想定义的颜色,我该怎么做呢?
1条答案
按热度按时间eagi6jfj1#
您可以使用
ListedColormap
指定白色和红色作为颜色Map中的唯一颜色,边界确定从一种颜色到下一种颜色的过渡位置:生成的图形只有两种颜色:
我对一个稍微不同的问题提出了本质上相同的东西:2D grid data visualization in Python
该解决方案的灵感来自matplotlib example。该示例解释了
bounds
必须比所使用的颜色数多一个。BoundaryNorm
是一个标准化,它将一系列值Map为整数,然后用于分配相应的颜色。在上面的例子中,cmap.N
只是定义了颜色的数量。