Как исправить пределы цветовой гаммы в matplotlib? - PullRequest
0 голосов
/ 10 мая 2018

Я реализую цикл для создания контурных графиков, используя функцию contourf в matplotlib. Целью исследования является выявление любых движущихся моделей в этом районе. Но полученные графики имеют разные цветовые гаммы. У некоторых из них от -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

1 Ответ

0 голосов
/ 10 мая 2018

Чтобы изменить пределы цветовой шкалы, вы можете позвонить plt.clim() перед вызовом plt.colorbar и указать диапазон вручную:

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()

...