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