From 53af8b7b275a4e6132f7b8b843ad7cbf416a46bf Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Wed, 5 Feb 2025 16:30:40 -0600 Subject: [PATCH] scripts: plot.py/plotmpl.py: Stop dropping unlabeled datasets That was confusing. The -L/--label flag is already tricky enough to get right. Allowing -L/--label to filter datasets is counter-intuitive and just makes it harder to debug things. --- scripts/plot.py | 12 +++++++++--- scripts/plotmpl.py | 8 ++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/scripts/plot.py b/scripts/plot.py index c443a429..8ea068c6 100755 --- a/scripts/plot.py +++ b/scripts/plot.py @@ -543,12 +543,16 @@ def fold(results, by=None, x=None, y=None, defines=[], labels=None): key_ += (y_,) datasets[key_] = dataset - # filter/order by labels + # order by labels if labels: datasets_ = co.OrderedDict() for _, key in labels: if key in datasets: datasets_[key] = datasets[key] + # include unlabeled data to help with debugging + for key, dataset in datasets.items(): + if key not in datasets_: + datasets_[key] = datasets[key] datasets = datasets_ return datasets @@ -1030,7 +1034,9 @@ def writeln(s=''): if all_labels: all_labels_ = {key: l for l, key in all_labels} for i, name in enumerate(datasets_.keys()): - if all_labels and not all_labels_[name]: + if (all_labels + and name in all_labels_ + and not all_labels_[name]): continue label = '%s%s' % ( '%s ' % datachars_[name] @@ -1039,7 +1045,7 @@ def writeln(s=''): if line_chars is not None else '', all_labels_[name] - if all_labels + if all_labels and name in all_labels_ else ','.join(name)) if label: diff --git a/scripts/plotmpl.py b/scripts/plotmpl.py index a682246f..471375f3 100755 --- a/scripts/plotmpl.py +++ b/scripts/plotmpl.py @@ -283,12 +283,16 @@ def fold(results, by=None, x=None, y=None, defines=[], labels=None): key_ += (y_,) datasets[key_] = dataset - # filter/order by labels + # order by labels if labels: datasets_ = co.OrderedDict() for _, key in labels: if key in datasets: datasets_[key] = datasets[key] + # include unlabeled data to help with debugging + for key, dataset in datasets.items(): + if key not in datasets_: + datasets_[key] = datasets[key] datasets = datasets_ return datasets @@ -947,7 +951,7 @@ def subplots_get(k, *, subplots=[], **args): for name in datasets_.keys(): name_ = ','.join(name) if name_ in legend: - if all_labels: + if all_labels and name in all_labels_: if all_labels_[name]: legend_.append((all_labels_[name], legend[name_])) else: