如何修复 matplotlib 中色标的限制?

How to fix the limits of color scale in matplotlib?

我正在使用 matplotlib 中的函数 contourf 实现一个循环来生成等高线图。 objective 的研究是找出该地区的任何移动模式。但是,生成的图具有不同的色标。其中一些是 -4 到 4,而另一些是 -1.5 到 9.0 等等,这使得解释毫无意义。如何将此色标固定为 -5.0 到 9.0?

此外,当我尝试导出绘图时,每个绘图中的颜色条数量都会增加。例如,循环中的第二个图有 2 个颜色条,第五个图有 5 个颜色条,依此类推。

到目前为止我做了什么:

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from numpy import linspace
from numpy import meshgrid

i=0
while i<len(inputdata):
    map = Basemap(projection='cyl', llcrnrlat=5.125, llcrnrlon=60.125, urcrnrlat=34.875, urcrnrlon=94.875)

    data = np.array(inputdata[i])

    x = linspace(map.llcrnrx, map.urcrnrx, data.shape[1])
    y = linspace(map.llcrnry, map.urcrnry, data.shape[0])

    xx, yy = meshgrid(x, y)

    map.contourf(xx, yy, data, cmap = 'summer_r')

    plt.colormap()
    plt.savefig('filename.jpg',dpi=300)
    i+=1

为了改变颜色条的范围,您可以在调用plt.colorbar之前调用plt.clim()并手动指定范围:

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from numpy import linspace
from numpy import meshgrid

i=0
while i<len(inputdata):
    map = Basemap(projection='cyl', llcrnrlat=5.125, llcrnrlon=60.125, urcrnrlat=34.875, urcrnrlon=94.875)

    data = np.array(inputdata[i])

    x = linspace(map.llcrnrx, map.urcrnrx, data.shape[1])
    y = linspace(map.llcrnry, map.urcrnry, data.shape[0])

    xx, yy = meshgrid(x, y)

    map.contourf(xx, yy, data, cmap = 'summer_r')

    plt.clim(-5, 9)  # manually setup the range of the colorscale and colorbar
    plt.colormap()
    plt.savefig('filename.jpg',dpi=300)
    plt.clf()
    i+=1

您可能还想在保存后清除图形以避免使用 plt.clf()

出现多个颜色条