<p>可以使用matplotlib.colors.diveringnorm,如下所示:</p>
<pre><code># define your scale, with white at zero
vmin = -0.2
vmax = 0.8
norm = colors.DivergingNorm(vmin=vmin, vcenter=0, vmax=vmax)
</code></pre>
<p>以你为例</p>
<pre><code>import numpy
from matplotlib import pyplot as plt
# some arbitrary data to plot
x = numpy.linspace(0, 2*numpy.pi, 30)
y = numpy.linspace(0, 2*numpy.pi, 20)
[X, Y] = numpy.meshgrid(x, y)
Z = numpy.sin(X)*numpy.cos(Y)
fig = plt.figure()
plt.ion()
plt.set_cmap('bwr') # a good start: blue to white to red colormap
# a plot ranging from -1 to 1, hence the value 0 (the average) is colorcoded in white
ax = fig.add_subplot(1, 2, 1)
plt.pcolor(X, Y, Z)
plt.colorbar()
# a plot ranging from -0.2 to 0.8 hence 0.3 (the average) is colorcoded in white
ax = fig.add_subplot(1, 2, 2)
# define your scale, with white at zero
vmin = -0.2
vmax = 0.8
norm = colors.DivergingNorm(vmin=vmin, vcenter=0, vmax=vmax)
plt.pcolor(X, Y, Z, vmin=vmin, vmax=vmax, norm=norm)
plt.colorbar()
</code></pre>
<p>会给你:</p>
<p><a href="https://i.stack.imgur.com/mrzg3.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/mrzg3.png" alt="enter image description here"/></a></p>