diff --git a/Framework/PythonInterface/mantid/plots/plotfunctions.py b/Framework/PythonInterface/mantid/plots/plotfunctions.py index 5b0d79807d643264e1ccfa9eb9c04759b3ea37c1..0a2e1eddd46ba1673ef396714259c45b9af7bfd6 100644 --- a/Framework/PythonInterface/mantid/plots/plotfunctions.py +++ b/Framework/PythonInterface/mantid/plots/plotfunctions.py @@ -211,7 +211,13 @@ def errorbar(axes, workspace, *args, **kwargs): """ x, y, dy, dx, indices, kwargs = _get_data_for_plot(axes, workspace, kwargs, with_dy=True, with_dx=False) - _setLabels1D(axes, workspace, indices) + try: + plot_as_distribution = (on_off_to_bool(config['graph1d.autodistribution']) and + not workspace.isDistribution()) + except AttributeError: + plot_as_distribution = on_off_to_bool(config['graph1d.autodistribution']) + + _setLabels1D(axes, workspace, indices, plot_as_dist=plot_as_distribution) return axes.errorbar(x, y, dy, dx, *args, **kwargs) diff --git a/qt/python/mantidqt/plotting/test/test_functions.py b/qt/python/mantidqt/plotting/test/test_functions.py index e908584db79d98e1a0f184a966124b4315b6ea43..e6798129787fd812d485f8736cf660dc49c96f58 100644 --- a/qt/python/mantidqt/plotting/test/test_functions.py +++ b/qt/python/mantidqt/plotting/test/test_functions.py @@ -22,6 +22,7 @@ import numpy as np # register mantid projection import mantid.plots # noqa from mantid.api import AnalysisDataService, WorkspaceFactory +from mantid.kernel import config from mantid.plots import MantidAxes from mantid.py3compat import mock from mantidqt.dialogs.spectraselectordialog import SpectraSelection @@ -209,6 +210,14 @@ class FunctionsTest(TestCase): self.assertEqual(len(mantid_ax.lines), 2) self.assertIsInstance(mantid_ax, MantidAxes) + def test_that_plot_spectrum_has_same_y_label_with_and_without_errorbars(self): + config['graph1d.autodistribution'] = 'Off' + self._compare_errorbar_labels_and_title() + + def test_that_plot_spectrum_has_same_y_label_with_and_without_errorbars_plot_as_dist(self): + config['graph1d.autodistribution'] = 'On' + self._compare_errorbar_labels_and_title() + # ------------- Failure tests ------------- def test_plot_from_names_with_non_plottable_workspaces_returns_None(self): @@ -251,6 +260,21 @@ class FunctionsTest(TestCase): msg="Label fragment '{}' not found in line label".format(label_part)) return fig + def _compare_errorbar_labels_and_title(self): + ws = self._test_ws + ws.setYUnitLabel("MyLabel") + ws.getAxis(0).setUnit("TOF") + for distribution_ws in [True, False]: + ws.setDistribution(distribution_ws) + ax = plot([ws], wksp_indices=[1]).get_axes()[0] + err_ax = plot([ws], wksp_indices=[1], errors=True).get_axes()[0] + # Compare y-labels + self.assertEqual(ax.get_ylabel(), err_ax.get_ylabel()) + # Compare x-labels + self.assertEqual(ax.get_xlabel(), err_ax.get_xlabel()) + # Compare title + self.assertEqual(ax.get_title(), err_ax.get_title()) + if __name__ == '__main__': main()