我试图使用Geoviews类绘制xarray网格。数据的形状是:(12,1300,1936),坐标(月,经度,纬度)。
实例化花费了太多的时间(在i5 32 i5的Ram计算机上几乎需要7个小时)。Ploting一个较小的数据集工作(花费几秒钟)。
这是xarray (名为xmam)的字符串表示形式:
<xarray.DataArray (MeanTemp Month:: 12, Latitude: 1300, Longitude: 1936)>
array([[[ nan, nan, ..., nan, nan],
[ 14., 14., ..., nan, nan],
...,
[ nan, nan, ..., nan, nan],
[ nan, nan, ..., nan, nan]],
[[ nan, nan, ..., nan, nan],
[ 16., 16., ..., nan, nan],
...,
[ nan, nan, ..., nan, nan],
[ nan, nan, ..., nan, nan]],
...,
[[ nan, nan, ..., nan, nan],
[ 17., 17., ..., nan, nan],
...,
[ nan, nan, ..., nan, nan],
[ nan, nan, ..., nan, nan]],
[[ nan, nan, ..., nan, nan],
[ 14., 14., ..., nan, nan],
...,
[ nan, nan, ..., nan, nan],
[ nan, nan, ..., nan, nan]]], dtype=float32)
Coordinates:
* MeanTemp Month: (MeanTemp Month:) |S9 'January' 'February' ... 'December'
* Latitude (Latitude) float64 25.57 25.56 25.55 ... 14.76 14.75 14.74
* Longitude (Longitude) float64 -103.6 -103.6 -103.6 ... -87.49 -87.48我就是这样实例化Geoviews数据集的
gvds = gv.Dataset(xmam,kdims=['Latitude', 'Longitude'],vdims=['MeanTemp Month:'],dynamic=True)我尝试使用和不使用
dynamic参数,给出类似的结果。
你觉得是什么问题?
请注意,Datashader还没有角色,因为我只是在创建对象,甚至没有绘制它!
发布于 2019-05-14 16:01:57
问题有两个:
dims参数引用坐标的名称。coords参数(如果是字典)需要具有与dim相同的名称。考虑以下示例:假设data是一个具有形状的numpy narray (12,100,100)
coords_months = range(12)
coords_lon = np.linspace(-103,87,100)
coords_lat = np.linspace(14,25,100)
dims = ['months','longitude', 'latitude']
coords = {'months':coords_months,'latitude':coords_lat,'longitude':coords_lon }
xdata = xa.DataArray(data,coords=coords,dims=dims,name='MeanTemperature')相反,我用了这个:
gvds = gv.Dataset(xdata)阴谋花费了一些时间(2分钟)。但是,我可以使用在以下文件中定义的regrid方法:
from holoviews.operation.datashader import regrid
image = gvds.to(gv.Image,['Longitude','Latitude'],dynamic=True)
regrid(image)效果很好。
其他相关问题here
https://stackoverflow.com/questions/56130233
复制相似问题