Изменение порядка значений долготы на оси X

У меня есть массив времени и долготы, который я рисую с помощью функции контура matplotlib. Мои значения долготы простираются от [-180, 180] и поэтому отображаются на оси X в этом порядке.

Я хотел бы, чтобы моя ось X проходила от 0 градусов до 0 градусов, поэтому мои отметки по оси X были бы (0, 60, 120, 180, -120, -60, 0). Есть простой способ сделать это?

Мой текущий код:

levels = np.arange(0, 5+0.5, 0.5)
lon_ticks = np.array([0, 60, 120, 180, -120, -60, 0])

for i in range(3):
    fig = plt.figure(figsize = (15, 15))
    ax = fig.add_subplot(1, 1, 1)
    im = ax.contourf(lon,date_list,TRMM_lat_mean[:,:,i], 
                 levels = levels, extend = 'both', cmap = 'gist_ncar')
    cb = plt.colorbar(im)


    plt.savefig("C:/Users/amcna/Desktop/fig{number}.png".format(number = i)) 

Что выводит:

!(https://imgur.com/epedcTu)

Как видите, мой массив долгот простирается от [-180, 180], однако я хочу, чтобы он располагался в указанном выше порядке.


person Andrew McNaughton    schedule 29.07.2020    source источник
comment
Пожалуйста, не могли бы вы отредактировать это и добавить код, о котором идет речь?   -  person Arvind Raghu    schedule 31.07.2020
comment
Извините за медленный ответ. Я отредактировал сообщение.   -  person Andrew McNaughton    schedule 04.08.2020


Ответы (1)


Поскольку ваши данные цикличны, представление через полярные координаты может работать:

Пример:

def f(x, y):
    return np.sin(x) ** 10 + np.cos(10 + y * x) * np.cos(x)

x = np.radians([0, 60, 120, 180, -120, -60, 0])
y = np.arange(0, 5+0.5, 0.5)

X, Y = np.mesh

grid(x, y)
Z = f(X, Y)

#-- Plot... ------------------------------------------------
fig, ax = plt.subplots(subplot_kw=dict(projection='polar'))
ax.contourf(Y, X, Z)

plt.show()

введите здесь описание изображения

Если вы не хотите этого делать, этот поток может вам помочь: данные с контуром/контуром matplotlib

person ttreis    schedule 04.08.2020
comment
Спасибо за ссылку о циклических данных. - person Andrew McNaughton; 05.08.2020