如何解决使用 hvplot 从 xarray 数据集中绘制两个数据变量
我在 python 中有一个 xarray 数据集。我想使用 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 重现这个?
解决方法
另一种可能性:
ds.y.assign_coords(x=ds.x).hvplot.scatter(x="x",y="y")
,
对 xarray 不太了解,但以下两种方法都有效,但老实说,我希望其他人提供更好的解决方案:
ds.reset_index(dims_or_levels='time').hvplot.scatter(x='x',y='y')
或者:
ds.hvplot.scatter(x='x',y='y',color='blue').overlay()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。