Я пытаюсь использовать xarray для построения данных в переменной сетке. Сетка, в которой хранятся мои данные, со временем меняется, но сохраняет те же размеры.
Я хотел бы иметь возможность строить 1d срезы в определенный момент времени. Ниже показан игрушечный пример того, что я пытаюсь сделать.
import xarray as xr
import numpy as np
import matplotlib.pyplot as plt
time = [0.1, 0.2] # i.e. time in seconds
# a 1d grid changes over time, but keeps the same dims
radius = np.array([np.arange(3),
np.arange(3)*1.2])
velocity = np.sin(radius) # make some random velocity field
ds = xr.Dataset({'velocity': (['time', 'radius'], velocity)},
coords={'r': (['time','radius'], radius),
'time': time})
Если я попытаюсь построить график в разное время, т.е.
ds.sel(time=0.1)['velocity'].plot()
ds.sel(time=0.2)['velocity'].plot()
plt.show()
Но я бы хотел, чтобы он воспроизводил поведение, которое я могу сделать явно с помощью matplotlib. Здесь он правильно отображает скорость в зависимости от радиуса в это время.
plt.plot(radius[0], velocity[0])
plt.plot(radius[1], velocity[1])
plt.show()
Возможно, я неправильно использую xarray, но он должен строить график скорости против правильного значения радиуса в то время.
Я неправильно настраиваю набор данных или неправильно использую функцию построения / индекса?