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()