如何解决xarray数据集:对数据变量进行多面绘制data_vars
我在这里也是xarray的新手。
我有xarray数据集(维度:时间,纬度,经度),其中包含几个具有相同维度和坐标的数据变量(例如ModelA,ModelB),并且我想对所有变量进行多面板绘图,例如第一步。
为此,我正在尝试使用xarray方面绘图实用程序。 经过反复试验后,我就做到了,但只能以一种非常不礼貌/效率低下的方式来完成,我非常感谢任何建议,以帮助他做得更好。
我特别想知道如何组合两个xarray DataArray,以使其在新的xarray DataArray / DataSet中作为两个单独的数据变量出现,以及如何告诉xarray-plot()应该将数据变量作为“ col”参数用于方面绘图。
非常感谢您的帮助!关于A。
我的代码如下:
import numpy as np
import xarray as xr
import pandas as pd
from datetime import datetime
import nc_time_axis
import cftime
#(1) == Create dummy data,dimensions and coordinates
ntimes,nlat,nlon = 3,8,5
lat = np.linspace(-10,10,nlat)
lon = np.linspace(-20,20,nlon)
year,month,daystart = 2016,3,1
dayend = daystart + ntimes
datestart = str(year).zfill(2)+'-'+str(month).zfill(2)+'-'+str(daystart).zfill(2)
cfdates = xr.cftime_range(datestart,periods=ntimes,freq='1D',calendar='noleap')
data = np.random.randn(ntimes,len(lat),len(lon))
#(2) == Create template 3dim xarray dataarray (xrda) called vara
xrda3D = xr.DataArray(data,coords=[cfdates,lat,lon],dims=['time','lat','lon'])
#(3) == Create xarray dataset (xrds) with two data variables called "vara" and "varB"
xrds3D2var = xr.Dataset({'vara': xrda3D,'varB': xrda3D*1.5})
#--> Failed prior attempts,both leading to TypeError: unhashable type: 'DataArray' (?????)
#(a) xrda3D.name = "vara"; xrda2add=(xrda3D*1.5).rename("varB"); xrds3D2var = xr.Dataset(xrda3D,xrda2add)
#(b) xrds3D2var= xr.Dataset({'vara': xrda3D,'varB': xrda2add} ) #
#(4) == create xrda with data variables encoded in additional dimensions "vardim"
# == like this,facet plotting can be used with name="vardim"
ovarname = '4Ddata'
arrlist = []
for varname in xrds3D2var.keys():
tmp = xrds3D2var[varname] #-- select xrda of individual data variables
arrlist.append(tmp) #-- append to list
xrda4D = xr.concat(arrlist,pd.Index(list(xrds3D2var.keys()),name='vardim'))
xrda4Dt = xrda4D.isel(time=0)
xrda4Dt.plot(col="vardim")
[xarray facet plot over data variables produced from code][1]
[1]: https://i.stack.imgur.com/ldMuT.png
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。