MCPcopy Create free account
hub / github.com/holoviz/hvplot / process_xarray

Function process_xarray

hvplot/util.py:681–765  ·  view source on GitHub ↗
(
    data, x, y, by, groupby, use_dask, persist, gridded, label, value_label, other_dims, kind=None
)

Source from the content-addressed store, hash-verified

679
680
681def process_xarray(
682 data, x, y, by, groupby, use_dask, persist, gridded, label, value_label, other_dims, kind=None
683):
684 import xarray as xr
685
686 if isinstance(data, xr.Dataset):
687 dataset = data
688 else:
689 name = data.name or label or value_label
690 dataset = data.to_dataset(name=name)
691
692 all_vars = list(other_dims) if other_dims else []
693 for var in [x, y, by, groupby]:
694 if isinstance(var, list):
695 all_vars.extend(var)
696 elif isinstance(var, str):
697 all_vars.append(var)
698
699 if not gridded:
700 not_found = [
701 var for var in all_vars if var not in list(dataset.data_vars) + list(dataset.coords)
702 ]
703 _, extra_vars, extra_coords = process_derived_datetime_xarray(dataset, not_found)
704 dataset = dataset.assign_coords(**{var: dataset[var] for var in extra_coords})
705 dataset = dataset.assign(**{var: dataset[var] for var in extra_vars})
706
707 data_vars = list(dataset.data_vars)
708 ignore = (by or []) + (groupby or [])
709 dims = [c for c in dataset.coords if dataset[c].shape != () and c not in ignore][::-1]
710 index_dims = [d for d in dims if d in dataset.indexes]
711
712 if gridded:
713 data = dataset
714 if len(dims) < 2:
715 dims += [dim for dim in list(data.dims)[::-1] if dim not in dims]
716 if not (x or y):
717 for c in dataset.coords:
718 axis = dataset[c].attrs.get('axis', '')
719 if axis.lower() == 'x':
720 x = c
721 elif axis.lower() == 'y':
722 y = c
723 if not (x or y):
724 x, y = index_dims[:2] if len(index_dims) > 1 else dims[:2]
725 elif x and not y:
726 y = [d for d in dims if d != x][0]
727 elif y and not x:
728 x = [d for d in dims if d != y][0]
729 if len(dims) > 2 and kind not in ('table', 'dataset') and not groupby:
730 dims = list(data.coords[x].dims) + list(data.coords[y].dims)
731 groupby = [
732 d for d in index_dims if d not in (x, y) and d not in dims and d not in other_dims
733 ]
734 else:
735 if use_dask:
736 data = dataset.to_dask_dataframe()
737 data = data.persist() if persist else data
738 else:

Calls 2

support_indexFunction · 0.85

Used in the wild real call sites across dependent graphs

searching dependent graphs…