2013-01-15 459 views
3

我正尝试使用colormap在matplotlib中创建一个填充轮廓图。 我想改变指定值的颜色。python matplotlib使用colormap更改contourf图中指定值的颜色

例如,

levs = [-3,-1,1,3] 
plt.contourf(x,y,z,levs,cmap=cm.jet,extend='both') 

我希望-1到1之间的颜色为白色把其他颜色默认颜色映射。

对不起,我的英语不好。 任何帮助,将不胜感激。

回答

5

我只是重叠绘制相同的等高线图,但之后只是-1和1之间的等级,颜色为白色。

例如:

from matplotlib import pyplot as plt 
from matplotlib import cm 
import numpy as np 

x, y = np.mgrid[-100:100,-100:100] 
x /= 10. 
y /= 10. 
r = np.sqrt(x*x+y*y) 
z = 10*np.sin(r)/(r+0.01) 
levels = [-4, -3, -2, -1, 1, 2, 3, 4] 
plt.contourf(x, y, z, levels=levels, extend='both', cmap=cm.jet) 
levels = [-1, 1] 
plt.contourf(x, y, z, levels=levels, colors='w') 
plt.savefig('contours.png') 

更新

如果你想要更多的控制,在contourf设置colors关键字的matplotlib颜色的元组,与相同数量的元素,你有水平(减1:这些颜色对应于您的水平边界之间的间隔)。然后,你不需要overplot一个单独的轮廓,您的彩条也是正确的:

# same as before 
levels = [-4, -3, -2, -1, 1, 2, 3, 4] 
plt.contourf(x, y, z, levels=levels, extend='both', colors=('#ff0000', '#ff9900', '#999900', 'w', '#009999', '#0099ff', '#0000ff')) 
plt.savefig('contours.png') 

更漂亮也许是定义你自己的颜色表,但后来你可能会碰到的问题是您必须将您的色彩图与您的轮廓线级完全匹配。这就是为什么,方便地存在colors关键字。

+0

谢谢!它运作良好。如果可能,我想更改由plt.colorbar()绘制的彩条的颜色列表。 – Tetsuro

+0

查看编辑我做了我的答案。其实,我认为这个更新比我最初的回答更适合您的问题。 – Evert

相关问题