Skip to content

Commit 167da22

Browse files
committed
update operation to automatic detect which dim it should use
1 parent b17e5ba commit 167da22

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

holoviews/operation/element.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1247,27 +1247,27 @@ def _compute_linkage(self, dataset, dim, vdim):
12471247
def _process(self, element, key=None):
12481248
element_kdims = element.kdims
12491249
dataset = Dataset(element)
1250-
sort_dims, dendros = [], []
1251-
for i, d in enumerate(self.p.adjoint_dims):
1250+
sort_dims, dendros = [], {}
1251+
for d in self.p.adjoint_dims:
12521252
ddata = self._compute_linkage(dataset, d, self.p.main_dim)
12531253
order = [ddata["ivl"].index(v) for v in dataset.dimension_values(d)][::-1]
1254-
sort_dim = f"sort{i}"
1254+
sort_dim = f"sort_{d}"
12551255
dataset = dataset.add_dimension(sort_dim, 0, order)
12561256
sort_dims.append(sort_dim)
12571257

12581258
# Important the kdims are unique
1259-
dendro = Dendrogram(ddata["icoord"], ddata["dcoord"], kdims=[f"__dendrogram_x_{i}", f"__dendrogram_y_{i}"])
1260-
dendros.append(dendro)
1259+
dendros[d] = Dendrogram(ddata["icoord"], ddata["dcoord"], kdims=[f"__dendrogram_x_{d}", f"__dendrogram_y_{d}"])
12611260

12621261
vdims = [dataset.get_dimension(self.p.main_dim), *[vd for vd in dataset.vdims if vd != self.p.main_dim]]
12631262
if type(element) is not Dataset:
12641263
main = element.clone(dataset.sort(sort_dims).reindex(element_kdims), vdims=vdims)
12651264
else:
12661265
main = self.p.main_element(dataset.sort(sort_dims).reindex(element_kdims[:2]), vdims=vdims)
12671266

1268-
if i == 0 and str(element_kdims[0]) == self.p.adjoint_dims[0]:
1269-
main = main << Empty()
1270-
for dendro in dendros:
1271-
main = main << dendro
1267+
for dim in map(str, main.kdims[::-1]):
1268+
if dim not in self.p.adjoint_dims:
1269+
main = main << Empty()
1270+
else:
1271+
main = main << dendros[dim]
12721272

12731273
return main

holoviews/tests/operation/test_operation.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -728,8 +728,8 @@ def test_right_only(self):
728728
assert isinstance(dendro, AdjointLayout)
729729
assert isinstance(dendro["main"], HeatMap)
730730
assert isinstance(dendro["right"], Dendrogram)
731-
assert "top" not in dendro
732-
assert dendro["right"].kdims == ["__dendrogram_x_0", "__dendrogram_y_0"]
731+
assert isinstance(dendro["top"], Empty)
732+
assert dendro["right"].kdims == ["__dendrogram_x_x", "__dendrogram_y_x"]
733733

734734
def test_top_only(self):
735735
dataset = Dataset(self.df)
@@ -738,7 +738,7 @@ def test_top_only(self):
738738
assert isinstance(dendro["main"], HeatMap)
739739
assert isinstance(dendro["right"], Empty)
740740
assert isinstance(dendro["top"], Dendrogram)
741-
assert dendro["top"].kdims == ["__dendrogram_x_0", "__dendrogram_y_0"]
741+
assert dendro["top"].kdims == ["__dendrogram_x_z", "__dendrogram_y_z"]
742742

743743
@pytest.mark.parametrize("adjoint_dims", [["x", "z"], ["z", "x"]], ids=["xz", "zx"])
744744
def test_both_xz(self, adjoint_dims):

0 commit comments

Comments
 (0)