首页 > 解决方案 > 使用具有日期时间维度的 xarray DataArray 中的数据着色器进行绘图

问题描述

我有一个二维的 xarray DataArray。一个维度是频率,另一个是时间。创建 DataArray 时,我指定坐标。

data = np.memmap(fname, np.float32, mode="c")
dx = xr.DataArray(data, coords=[dt,freqs], dims=["Time", "Frequency"])

我遇到的问题是,如果我将时间坐标 (dt) 定义为 pandas date_range 或 timedelta_range

times = pd.date_range("2020-10-13", periods=data.shape[0], freq='81.92U')

或者

times = pd.timedelta_range(start="0 millisecond", periods=data.shape[0], freq='81.92U')

数据着色器抛出错误

TypeError: Cannot cast ufunc less input from dtype('<m8[ns]') to dtype('<m8') with casting rule 'same_kind'

跑完之后

import datasahder as ds
cvs = ds.Canvas(plot_width=1000, plot_height=300)
agg = cvs.raster(dx.T, interpolate='linear')
img = tf.Images(tf.shade(agg, cmap=gray, name="linear interpolation (default)"))

但是,我可以将时间坐标指定为一个np.arange对象,它具有int类型并且工作正常。但是后来我从数组中丢失了日期时间信息。

有没有解决的办法?

标签: pythonpandaspython-xarraydatashader

解决方案


推荐阅读