我只是重叠绘制相同的等高线图,但之后只是-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
关键字。
谢谢!它运作良好。如果可能,我想更改由plt.colorbar()绘制的彩条的颜色列表。 – Tetsuro
查看编辑我做了我的答案。其实,我认为这个更新比我最初的回答更适合您的问题。 – Evert