全息视图中的多维数据



我有一个维度为temperaturedatasourcetimealtitude的4-D数据集(如xr.DataArray

(。

如何创建具有 temperature(src0, z)temperature(src1, z),以便我可以通过滑块选择高度?

我目前遇到的问题是,当我将数据转换为hv.Table时,我有一列datasource和一列temperature,并且我无法弄清楚如何绘制temperature(datasource=='src0')temperature(datasource=='src1')


编辑:

试图澄清:我有一个4-D数据集DATA(这是一个xr.DataArray(,维度为data_variabledatasourcetimealtitude

data_variable有 2 个条目,temperaturehumidity

datasource有 2 个条目,modelmeasurement

有6个高度和~2000次。

如何创建

具有
  • 在 x 轴上显示datasource model的数据
  • 在 y 轴上显示datasource measurement的数据

这样就可以用滑块选择altitudedata_variable

如果我

正确理解了您的问题,您想绘制温度随时间变化的散点值,比较两个数据源并按不同高度编制索引?

# Load the data into a holoviews Dataset
ds = hv.Dataset(data_array)
# Create Scatter objects plotting time vs. temperature
# and group by altitude and datasource
scatter = ds.to(hv.Scatter, 'time', 'temperature',
                groupby=['altitude', 'datasource'], dynamic=True)
# Now overlay the datasource dimension and display
scatter.overlay('datasource')

希望我正确理解了您的问题,但基于此基本模式,您应该能够以所需的任何排列方式绘制数据。

编辑

:根据您的编辑,主要问题是HoloViews希望每个data_variable都在单独的数组中,在熊猫术语中,您需要执行等效的操作pd.melt

# Define data array like yours
dataarray = xr.DataArray(np.random.rand(10, 10, 2, 2), name='variable',
                   coords=[('time', range(10)), ('altitude', range(10)),
                           ('datasource', ['model', 'measurement']),
                           ('data_variable', ['humidity', 'temperature'])])
# Groupby datasource and data_variable, combining the resultant array into a Dataset with 4 data variables
group_dims = ['datasource', 'data_variable']
grouped = hv.Dataset(dataarray, datatype=['xarray']).groupby(group_dims)
dataset = xr.merge([da.data.rename({'variable': ' '.join(key)}).drop(group_dims)
                    for key, da in grouped.items()])
ds = hv.Dataset(dataset)
scatter = ds.to(hv.Scatter, 'model temperature', 'measurement temperature', 'altitude')

但是请注意,在测试此内容时,我遇到了一个错误,我现在已为其打开了一个 PR(请参阅此处(

最新更新