Matplotlib показывает только половину данных, когда дело доходит до построения карты

Я новичок в программировании на Python и пытался получить карту «sst», но получилось так, что карта всегда делится пополам, когда дело доходит до отображения самих данных.

from matplotlib import pyplot as plt
from netCDF4 import Dataset
import numpy as np
from mpl_toolkits.basemap import Basemap

#the path the program will read;
data = Dataset('sst.day.mean.1981.nc')
#extracting variables.
lats= data.variables['lat'][:]
lons = data.variables['lon'][:]
time = data.variables['time'][:]
sst = data.variables['sst'][:]


#here i start defining the map
mp = Basemap(projection = 'cyl')
lon, lat = np.meshgrid(lons, lats)
#the abscissa and ordinate will be defined based on longitude and latitude, respectively.
x, y = mp(lon, lat)

c_scheme = mp.pcolor(x, y, np.squeeze(sst[0,:,:]), cmap = 'jet')
mp.drawcoastlines()
mp.drawstates()
mp.drawcountries()
plt.title('Sea surface temperature')
plt.show()

Matplotlib показывает только половину данных, когда дело доходит до построения карты

Я видел кого-то с похожей проблемой и пытался адаптировать решение к своему коду, но недостаточное понимание matplotlib привело меня к тому же результату, поскольку я не мог понять, как на самом деле matplotlib распределяется от 0 до 360 или от -180 до 180. .

ваши данные имеют долготу в диапазоне от 0 до 360. Предположительно, matplotlib/basemap ожидает их в диапазоне от -180 до 180. Поэтому вам просто нужно настроить любые значения выше 180. Что-то вроде этого после загрузки ваших данных должно работать: lon[lon>180] -= 360

tmdavison 21.05.2024 15:58
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вам следует установить значение latlon на True

c_scheme = mp.pcolor(x, y, sst[0,:,:], cmap = 'jet', latlon = True)

выход:

Другие вопросы по теме