Проблемы с построением колчанов из файла netcdf

Я пытаюсь нарисовать колчаны ветра из файла NetCDF, однако я могу построить только одну линию колчанов, прямо через базовую карту, как показано на изображении. Код ниже. Большое спасибо за любую помощь :)

данные здесь, пожалуйста, замените папку onedrive, спасибо https://drive.google.com/file/d/160121aFx0Ys6G1jdQZOCT2Ve9eZgOyUy/view?usp=sharing

import xarray as xr
import cartopy.crs as ccrs
import matplotlib.pyplot as plt

data = xr.open_dataset(<Insert google drive file data here>)

data = data.sel(time='2010-04-14T00:00:00.000000000')

X = data.longitude; Y = data.latitude
U = data.u10[200]; V = data.v10[200]

plt.figure()
ax = plt.subplot(111,projection=ccrs.PlateCarree())

ax.quiver(X[::5], Y[::5], U[::5], V[::5],color='green')

plt.show()

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

В настоящее время это построенное изображение:

Не могли бы вы опубликовать минимальный воспроизводимый пример?

medium-dimensional 13.01.2023 13:27

Привет, @medium-dimension , большое спасибо за быстрый ответ, drive.google.com/file/d/1kQ3o_0irbnMgwSFMpbbB-_lMqdgAR8SB/… вот ссылка на выдаваемый им сюжет, (для простоты колчан имеет построено для каждой 5-й точки данных)

Samuel B 13.01.2023 13:45

Привет @medium-dimension извините, у меня сейчас лекция, но я посмотрю и попробую сделать это позже, спасибо :)

Samuel B 13.01.2023 13:54
Почему в 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
3
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы берете данные только из последней строки с data.u10[200]. Вместо колчана создайте координаты в виде 2D-массивов и нанесите, например, каждые 5 точек набора данных. Вот мое решение, я загрузил и сохранил ваши данные как «exdata.nc».

#!/usr/bin/env ipython
# --------------------
import xarray as xr
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
import numpy as np
# --------------------------------------------------------------------
data = xr.open_dataset('exdata.nc')

data = data.sel(time='2010-04-14T00:00:00.000000000')

X = data.longitude; Y = data.latitude
# --------------------------------------------------------------------
XM,YM = np.meshgrid(X,Y)
U = data.u10; V = data.v10
skipx, skipy = 5,5
# ----------------------------------------------------------------
plt.figure(figsize=(12,12))
ax = plt.subplot(111,projection=ccrs.PlateCarree())

ax.quiver(XM[::skipy,::skipx], YM[::skipy,::skipx], U[::skipy,::skipx], V[::skipy,::skipx],color='green')
ax.add_feature(cfeature.LAND)
ax.add_feature(cfeature.OCEAN)
plt.show()
# ---------------------------------

Надеюсь, это поможет в качестве примера!

Большое спасибо msi_gerva! Красиво, желаю тебе всего наилучшего в твоих будущих начинаниях :))))

Samuel B 13.01.2023 18:16

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