diff --git a/bilby/core/result.py b/bilby/core/result.py index cefef401d1b7d2468abb1609dbec50e3b134b1e9..a35b13991f1df12c4d8732dde9037e881d238df4 100644 --- a/bilby/core/result.py +++ b/bilby/core/result.py @@ -927,6 +927,8 @@ class Result(object): 'labels', self.get_latex_labels_from_parameter_keys( plot_parameter_keys)) + kwargs["labels"] = sanity_check_labels(kwargs["labels"]) + # Unless already set, set the range to include all samples # This prevents ValueErrors being raised for parameters with no range kwargs['range'] = kwargs.get('range', [1] * len(plot_parameter_keys)) @@ -1584,6 +1586,8 @@ def plot_multiple(results, filename=None, labels=None, colours=None, if labels is None: labels = default_labels + labels = sanity_check_labels(labels) + if evidences: if np.isnan(results[0].log_bayes_factor): template = ' $\mathrm{{ln}}(Z)={lnz:1.3g}$' @@ -1720,6 +1724,14 @@ def make_pp_plot(results, filename=None, save=True, confidence_interval=[0.68, 0 return fig, pvals +def sanity_check_labels(labels): + """ Check labels for plotting to remove matplotlib errors """ + for ii, lab in enumerate(labels): + if "_" in lab and "$" not in lab: + labels[ii] = lab.replace("_", "-") + return labels + + class ResultError(Exception): """ Base exception for all Result related errors """ diff --git a/test/result_test.py b/test/result_test.py index b49f73435e86ada39fbeeee567d5c57e3561c069..7ef0c4047b3b18842a39ccc5969a510139735925 100644 --- a/test/result_test.py +++ b/test/result_test.py @@ -722,5 +722,12 @@ class TestResultListError(unittest.TestCase): self.nested_results.combine() +class TestMiscResults(unittest.TestCase): + def test_sanity_check_labels(self): + labels = ["a", "$a$", "a_1", "$a_1$"] + labels_checked = bilby.core.result.sanity_check_labels(labels) + self.assertEqual(labels_checked, ["a", "$a$", "a-1", "$a_1$"]) + + if __name__ == "__main__": unittest.main()