Данные не отображаются, но ошибок нет - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь построить некоторые данные об осадках.Код, который я использую, немного изменен из этого кода здесь .

Код работает нормально, когда я строю графики, используя данные с сайта, использованного в ссылке, но когда я использую другойУ меня есть набор данных, он не строится.Самое большое различие между этим набором данных и набором данных, используемым в примере ссылки, состоит в том, что мой набор данных - это глобальные данные.Набор данных, который я использую, также является netcdf, не маскируется, и я загружаю его так же, как в примере.

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

Мой код такой же, ожидайте некоторых изменений в разделе, где изображена фигура (ниже), которую я изменил, чтобы она отображала конкретную область вместо CONUS, как в примере (используя ax.set_extent),

Когда я не устанавливаю экстент, кажется, что он отображает данные, но тогда ни одна из границ (береговые линии, линии состояния и т. Д.) Не отображается.Исходя из этого, я предполагаю, что это что-то с самим набором данных, что-то с set_extent, или с комбинацией вещей, которая заставляет его работать неправильно.Я не получаю никаких ошибок при планировании, так или иначе.Тем не менее, может быть что-то еще, что я скучаю с этим.

В конце я фактически сравниваю свой набор данных с набором данных, использованным в примере ссылки, поэтому я хотел бы, чтобы они были в той же проекции.

Спасибо за понимание и дайте мне знать, если вам нужна дополнительная информация о самих данных!

fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(1, 1, 1, projection=proj)

ax.set_extent((x1,x0,y0,y1))

# draw coastlines, state and country boundaries, edge of map.
ax.coastlines()
ax.add_feature(cfeature.BORDERS)
ax.add_feature(cfeature.STATES)

cs1 = ax.contourf(ym, xm, data1, clevs, cmap=cmap, norm=norm)

# add colorbar.
cbar = plt.colorbar(cs1, orientation='horizontal')
#cbar.set_label(data1.units)

#ax.set_title(prcpvar.long_name + ' for period ending ' + nc.creation_time)
plt.show()
plt.savefig('ncep_model')

Результаты, когда экстент не включен в код выше: enter image description here

Редактировать 1:

Я добавлю, что мне удалось успешно построить данные с помощью этого кода ниже (из шаблона по умолчанию, который я сделал).Я пытался изменить проекцию на стереографическую, но у меня возникли проблемы с настройкой правильного построения графика с использованием базовой карты, потому что я никогда не использовал его раньше.В качестве альтернативы, если вы не можете выяснить ошибку с помощью приведенного выше кода и вместо этого могли бы помочь с изменением проекции для приведенного ниже кода, я также принял бы это.На данный момент я просто хочу, чтобы мои данные отображались правильно в правильной проекции, которую я хочу!

(я также включил результаты для кода ниже, чтобы подтвердить, что данные должны отображаться в этом месте)

LLlat = 40.
LLlon = 263.
URlat = 44.
URlon = 270.

lat = xm
lon = ym

%matplotlib inline
plt.figure(1,figsize=(10, 8),)
plt.title('Convective Precipitation 8/28/2018 0Z (in) Valid July 2018')

map = Basemap(projection='cyl',\
        llcrnrlat=LLlat,urcrnrlat=URlat,\
        llcrnrlon=LLlon,urcrnrlon=URlon,\
        rsphere=6371200.,resolution='i')
map.drawcoastlines(linewidth=0.5) # Draw some coastlines
map.drawstates(linewidth=0.5) # Draw some coastlines
map.drawrivers(color='#000000')
map.drawparallels(np.arange(-90.,91.,30),labels=[1,0,0,0]) # Drawing lines of latitude
map.drawmeridians(np.arange(0.,330.,60),labels=[0,0,0,1]) # Drawing lines of longitude
lons,lats = map(lon,lat) # Setting up the grid in cylindrical coords.
cs = plt.contourf(lons,lats,data1[:,:], clevs,cmap=cmap, norm=norm)
cb = plt.colorbar(cs,orientation='horizontal')

plt.show()

enter image description here

Редактировать 2:

Я добавил полученный график, когда не включаю set_extent в первый фрагмент кода (не знаю, поможет ли этовообще, но подумал, что я тоже это включу)

1 Ответ

0 голосов
/ 13 декабря 2018

Так что было бы очень полезно иметь больше информации о ваших данных, например, ссылку на файл образца, но я предполагаю, что ваши данные не дают координат в стереографической проекции, в отличие от исходных данных.При построении с использованием Cartopy, если не указано иное, все команды построения предполагают, что приведенные значения x, y находятся в проекции, указанной для осей (для исходного кода это было ccrs.Stereographic).Если это не так, например, при построении в графических отложениях, вам нужно указать это, передав transform команде построения, как показано ниже, где я указываю, что значения x, y равны лат / долг:

data_proj = ccrs.PlateCarree()
cs1 = ax.contourf(ym, xm, data1, clevs, cmap=cmap, norm=norm,
                  transform=data_proj)
...