Построение двух переменных данных из набора данных xarray с использованием hvplot

У меня есть набор данных xarray на Python. Я хотел бы построить две зависимые (данные) переменные друг против друга, используя библиотеку hvplot. Вот простой пример набора данных:

import numpy as np
import xarray as xr
import hvplot.xarray

# Create the dataset
time = np.linspace(0,10)
x = time*2 + 1
y = time*3 - 1

ds = xr.Dataset()
ds.coords['time'] = time
ds['x'] = (['time'],x)
ds['y'] = (['time'],y)

# Output
<xarray.Dataset>
Dimensions:  (time: 50)
Coordinates:
  * time     (time) float64 0.0 0.2041 0.4082 0.6122 ... 9.388 9.592 9.796 10.0
Data variables:
    x        (time) float64 1.0 1.408 1.816 2.224 ... 19.78 20.18 20.59 21.0
    y        (time) float64 -1.0 -0.3878 0.2245 0.8367 ... 27.78 28.39 29.0

Легко построить график x или y в зависимости от времени, просто

ds.x.hvplot()

Однако я хочу построить график x против y. Я ожидал, что это сработает:

ds.hvplot(x='x',y='y')

но это строит только одну точку за раз с ползунком для координаты «время». xarray имеет функцию построения графика, которая выполняет график, как и ожидалось, с использованием matplotlib.

ds.plot.scatter(x='x',y='y')

Есть ли способ воспроизвести это с помощью hvplot?


person Redlegjed    schedule 13.02.2021    source источник


Ответы (2)


Другая возможность:

ds.y.assign_coords(x=ds.x).hvplot.scatter(x="x", y="y")
person Johannes Ringler    schedule 05.05.2021

Не слишком много знаю о xarray, но оба следующих подхода работают, но, честно говоря, я надеюсь, что кто-то еще придет с более приятным решением:

ds.reset_index(dims_or_levels='time').hvplot.scatter(x='x', y='y')

Or:

ds.hvplot.scatter(x='x', y='y', color='blue').overlay()
person Sander van den Oord    schedule 14.02.2021