diff --git a/mlair/plotting/data_insight_plotting.py b/mlair/plotting/data_insight_plotting.py index 8dbf4fc4b088d10efe5208aebc8b46e50b75360c..5b06b76be1e012032d4a1e8785587fdfd45a3d7c 100644 --- a/mlair/plotting/data_insight_plotting.py +++ b/mlair/plotting/data_insight_plotting.py @@ -496,7 +496,7 @@ class PlotDataHistogram(AbstractPlotClass): # pragma: no cover def _get_inputs_targets(gens, dim): k = list(gens.keys())[0] gen = gens[k][0] - inputs = to_list(gen.get_X(as_numpy=False)[0].coords[dim].values.tolist()) + inputs = list(set([y for x in to_list(gen.get_X(as_numpy=False)) for y in x.coords[dim].values.tolist()])) targets = to_list(gen.get_Y(as_numpy=False).coords[dim].values.tolist()) n_branches = len(gen.get_X(as_numpy=False)) return inputs, targets, n_branches @@ -517,7 +517,7 @@ class PlotDataHistogram(AbstractPlotClass): # pragma: no cover w = min(abs(f(gen).coords[self.window_dim].values)) data = f(gen).sel({self.window_dim: w}) res, _, g_edges = f_proc_hist(data, variables, n_bins, self.variables_dim) - for var in variables: + for var in res.keys(): b = tmp_bins.get(var, []) b.append(res[var]) tmp_bins[var] = b @@ -530,7 +530,7 @@ class PlotDataHistogram(AbstractPlotClass): # pragma: no cover bins = {} edges = {} interval_width = {} - for var in variables: + for var in tmp_bins.keys(): bin_edges = np.linspace(start[var], end[var], n_bins + 1) interval_width[var] = bin_edges[1] - bin_edges[0] for i, e in enumerate(tmp_bins[var]): @@ -869,7 +869,7 @@ def f_proc(var, d_var, f_index, time_dim="datetime", use_last_value=True): # pr def f_proc_2(g, m, pos, variables_dim, time_dim, f_index, use_last_value): # pragma: no cover # load lazy data - id_classes = list(filter(lambda x: "id_class" in x, dir(g))) + id_classes = list(filter(lambda x: "id_class" in x, dir(g))) if pos == 0 else ["id_class"] for id_cls_name in id_classes: id_cls = getattr(g, id_cls_name) if hasattr(id_cls, "lazy"): @@ -915,9 +915,10 @@ def f_proc_hist(data, variables, n_bins, variables_dim): # pragma: no cover bin_edges = {} interval_width = {} for var in variables: - d = data.sel({variables_dim: var}).squeeze() if len(data.shape) > 1 else data - res[var], bin_edges[var] = np.histogram(d.values, n_bins) - interval_width[var] = bin_edges[var][1] - bin_edges[var][0] + if var in data.coords[variables_dim]: + d = data.sel({variables_dim: var}).squeeze() if len(data.shape) > 1 else data + res[var], bin_edges[var] = np.histogram(d.values, n_bins) + interval_width[var] = bin_edges[var][1] - bin_edges[var][0] return res, interval_width, bin_edges