自定义Colorbar

时间:2016-02-08 18:33:53

标签: python matplotlib colorbar

我正在尝试创建自定义颜色条,但颜色标注看起来与我定义的完全不同 - enter image description here

颜色应该是褐色 - >白色 - >蓝色,应该有9个类别。

我的代码附在下面:

plot = np.clip(plot,40,250)

bounds = [0, 40, 60, 80, 100, 125, 150, 200, 250, 300]
rgblist = [(51,25,0), (102,51,0), (153,76,0), (239,159,80), (255, 255, 255),
       (153,204,255), (51,153,255), (0,102,204), (2,2,128)]
clist = [[c/255 for  c in rgb] for rgb in rgblist]
cmap = colors.ListedColormap(clist)
norm = colors.BoundaryNorm(bounds, cmap.N)


cs = m.contourf(X,Y,plot,bounds, cmap=cmap, norm=norm)
cbar = m.colorbar(cs, ticks=[20,50,70,90,112.5,137.5,175,225,275])
cbar.set_ticklabels(['<40','40-60', '60-80', '80-100', '100-125', '125-150', '150-200', '200-250', '>250'])

plt.show()

1 个答案:

答案 0 :(得分:3)

我猜你使用的是Python 2.x.在这种情况下,您的行

clist = [[c/255 for  c in rgb] for rgb in rgblist]

执行整数除法,即结果存储为整数,并且所有小数信息都丢失。在您的情况下,这会导致除255/255之外的所有分歧,从而产生0

要更改此设置,您可以通过添加小数点来除以浮点数:

clist = [[c/255. for  c in rgb] for rgb in rgblist]

或者您可以在分区之前通过

导入Python 3分区行为
from __future__ import division