Как заставить Basemap работать с графикой xarray для временных интервалов - PullRequest
0 голосов
/ 19 февраля 2019

Мне нужно нарисовать объект xarray.DataArray в шейп-файле с помощью базовой карты.

Исходные данные содержат данные за несколько дней.

Я бы хотел, чтобы каждый набор данных отображался нашейп-файл с базовой картой.

... ...
shapefile1="./shp/CFA_DISTRICT_BODY"

# Select 3 days' datasets
da_criteria_1or0_hourly_rolled_resampled_sel_slice = da_criteria_1or0_hourly_rolled_resampled.sel(time=slice('2017-01-01', '2017-01-03'))

# Draw each day's dataset and set them drawn horizontally
p = da_criteria_1or0_hourly_rolled_resampled_sel_slice.plot(levels=[0,1,2], x='longitude', y='latitude', col='time', col_wrap=3)

# Draw the shapefile
map = Basemap(llcrnrlat=-39.2,urcrnrlat=-33.9,llcrnrlon=140.8,urcrnrlon=150.0,resolution='i')
map.readshapefile(shapefile1, 'CFA_DISTRICT_BODY', linewidth=0.5)

plt.show()

Проблема с кодом выше заключается в том, что на шейп-файле нарисован только набор данных дня 3.

enter image description here

1 Ответ

0 голосов
/ 19 февраля 2019

Вы определяете только один Basemap.Это будет применяться к последним активным осям.

Вместо этого вы должны создать базовую карту для каждой оси в FacetGrid.Идея была бы в духе

grid = data.plot(...)

for ax in grid.axes.flatten():
    map = Basemap(..., ax=ax)
    map.readshapefile(...)

plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...