示例#1
0
    def test_get_plot_fig_return_same_figure_with_updated_axis_number(self):
        initial_fig = plt.Figure()

        fig, axes = get_plot_fig(overplot=False, fig=initial_fig, axes_num=5)

        self.assertEqual(fig, initial_fig)
        self.assertEqual(6, len(fig.axes))
示例#2
0
    def __init__(self, quick_edit, settings, parent=None):
        super().__init__(parent)
        # later we will allow these to be changed in the settings
        self._settings = settings
        self._min_y_range = settings.min_y_range
        self._y_axis_margin = settings.y_axis_margin
        self._x_tick_labels = None
        self._y_tick_labels = None
        # create the figure
        self.fig = Figure()
        self.fig.canvas = FigureCanvas(self.fig)
        self.fig.canvas.setMinimumHeight(500)
        self.toolBar = PlotToolbar(self.fig.canvas, self)

        # Create a set of Mantid axis for the figure
        self.fig, axes = get_plot_fig(overplot=False,
                                      ax_properties=None,
                                      axes_num=1,
                                      fig=self.fig)
        self._number_of_axes = 1
        self._color_queue = [ColorQueue(DEFAULT_COLOR_CYCLE)]

        # Add a splitter for the plotting canvas and quick edit toolbar
        splitter = QtWidgets.QSplitter(QtCore.Qt.Vertical)
        splitter.addWidget(self.fig.canvas)
        self._quick_edit = quick_edit
        splitter.addWidget(self._quick_edit)
        splitter.setChildrenCollapsible(False)

        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(self.toolBar)
        layout.addWidget(splitter)
        self.setLayout(layout)

        self._plot_information_list = []  # type : List[PlotInformation}
示例#3
0
    def test_get_plot_fig_returns_same_figure_and_axes_if_figure_provided_and_overplot_is_true(self):
        initial_fig = plt.Figure()

        fig, axes = get_plot_fig(overplot=True, fig=initial_fig)

        self.assertEqual(fig, initial_fig)
        self.assertEqual(0, len(fig.axes))
示例#4
0
 def new_plot_figure(self, num_axes):
     self.fig.clf()
     if num_axes < 1:
         num_axes = 1
     self.fig, axes = get_plot_fig(overplot=False, ax_properties=None, axes_num=num_axes,
                                   fig=self.fig)
     self.fig.tight_layout()
     self.fig.canvas.draw()
示例#5
0
    def test_get_plot_fig_with_overplot_true_maintains_axes_scales(self):
        ax = plt.gca()
        ax.set_xscale('log')
        ax.set_yscale('log')

        fig, axes = get_plot_fig(overplot=True)

        self.assertEqual(axes[0].get_xscale(), 'log')
        self.assertEqual(axes[0].get_yscale(), 'log')
示例#6
0
    def test_get_plot_fig_with_no_figure_provided_and_overplot_is_true_returns_new_figure(self):
        initial_fig = plt.Figure()
        set_figure_as_current_figure(initial_fig)

        # If not figure is provided we provide a user a new figure plot, since this allows
        # overplotting in a loop, which requires there to be a figure with an associated axis
        fig, axes = get_plot_fig(overplot=True)

        self.assertNotEqual(fig, initial_fig)
        self.assertNotEqual(0, len(fig.axes))
示例#7
0
 def create_new_plot_canvas(self, num_axes):
     """Creates a new blank plotting canvas"""
     self._plot_information_list = []
     self._number_of_axes = num_axes
     self.fig.clf()
     self.fig, axes = get_plot_fig(overplot=False,
                                   ax_properties=None,
                                   axes_num=num_axes,
                                   fig=self.fig)
     self.fig.tight_layout()
     self.fig.canvas.draw()
 def create_new_plot_canvas(self, num_axes):
     """Creates a new blank plotting canvas"""
     self.toolBar.reset_gridline_flags()
     self._plot_information_list = []
     self._number_of_axes = num_axes
     self._color_queue = [
         ColorQueue(DEFAULT_COLOR_CYCLE) for _ in range(num_axes)
     ]
     self.fig.clf()
     self.fig, axes = get_plot_fig(overplot=False,
                                   ax_properties=None,
                                   axes_num=num_axes,
                                   fig=self.fig)
     self.fig.tight_layout()
     self.fig.canvas.draw()
示例#9
0
    def __init__(self, parent=None):
        super().__init__(parent)

        # create the figure
        self.fig = Figure()
        self.fig.canvas = FigureCanvas(self.fig)
        self.toolBar = PlotToolbar(self.fig.canvas, self)

        # Create a set of Mantid axis for the figure
        self.fig, axes = get_plot_fig(overplot=False,
                                      ax_properties=None,
                                      axes_num=1,
                                      fig=self.fig)
        self._number_of_axes = 1

        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(self.toolBar)
        layout.addWidget(self.fig.canvas)
        self.setLayout(layout)

        self._plot_information_list = []  # type : List[PlotInformation}
示例#10
0
 def _create_external_workbench_fig_window(self):
     from mantid.plots.plotfunctions import get_plot_fig
     external_fig, _ = get_plot_fig(axes_num=self.number_of_axes)
     return external_fig
示例#11
0
    def test_no_figure_provided_and_overplot_is_false_returns_new_figure_with_correct_axes_number(self):
        fig, axes = get_plot_fig(overplot=False, axes_num=5)

        self.assertEqual(6, len(fig.axes))
    def setup_interface(self):
        self.setObjectName("PlotWidget")
        self.resize(500, 100)

        self.plot_label = QtWidgets.QLabel(self)
        self.plot_label.setObjectName("plotLabel")
        self.plot_label.setText("Plot type : ")

        self.tiled_type_label = QtWidgets.QLabel(self)
        self.tiled_type_label.setObjectName("tileTypeLabel")
        self.tiled_type_label.setText("Tile plots by: ")

        self.raw = QtWidgets.QCheckBox("plot raw", self)
        self.raw.setChecked(True)

        self.plot_selector = QtWidgets.QComboBox(self)
        self.plot_selector.setObjectName("plotSelector")
        self.plot_selector.addItems(["Asymmetry", "Counts"])
        self.plot_selector.setSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                         QtWidgets.QSizePolicy.Fixed)

        self.plot_type_selector = QtWidgets.QCheckBox(parent=self)
        self.plot_type_selector.setChecked(False)
        self.plot_type_selector.setObjectName("plotTypeSelector")
        self.plot_type_selector.setSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                              QtWidgets.QSizePolicy.Fixed)

        self.tile_type_selector = QtWidgets.QComboBox(self)
        self.tile_type_selector.setObjectName("tileTypeSelector")
        self.tile_type_selector.addItems(["Group/Pair", "Run"])

        self.horizontal_layout = QtWidgets.QHBoxLayout()
        self.horizontal_layout.setObjectName("horizontalLayout")
        self.horizontal_layout.addWidget(self.plot_label)
        self.horizontal_layout.addWidget(self.plot_selector)
        self.horizontal_layout.addSpacing(15)
        self.horizontal_layout.addStretch(0)
        self.horizontal_layout.addWidget(self.plot_type_selector)
        self.horizontal_layout.addWidget(self.tiled_type_label)
        self.horizontal_layout.addWidget(self.tile_type_selector)
        self.horizontal_layout.addSpacing(15)
        self.horizontal_layout.addStretch(0)
        self.horizontal_layout.addWidget(self.raw)
        self.horizontal_layout.addStretch(0)
        self.horizontal_layout.addSpacing(50)

        # plotting options
        self.plot_options = QuickEditWidget(self)
        self.plot_options.widget.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                               QtWidgets.QSizePolicy.Fixed)

        self.vertical_layout = QtWidgets.QVBoxLayout()
        self.vertical_layout.setObjectName("verticalLayout")
        self.vertical_layout.addItem(self.horizontal_layout)

        self.group = QtWidgets.QGroupBox("Plotting")
        self.group.setFlat(False)
        self.setStyleSheet(
            "QGroupBox {border: 1px solid grey;border-radius: 10px;margin-top: 1ex; margin-right: 0ex}"
            "QGroupBox:title {"
            'subcontrol-origin: margin;'
            "padding: 0 3px;"
            'subcontrol-position: top center;'
            'padding-top: 0px;'
            'padding-bottom: 0px;'
            "padding-right: 10px;"
            ' color: grey; }')

        self.group.setLayout(self.vertical_layout)

        # create the figure
        self.fig = Figure()
        self.fig.canvas = FigureCanvas(self.fig)
        self.toolBar = NavigationToolbar(self.fig.canvas, self)
        # set size policy
        self.toolBar.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                   QtWidgets.QSizePolicy.Fixed)

        # Create a set of Mantid axis for the figure
        self.fig, axes = get_plot_fig(overplot=False,
                                      ax_properties=None,
                                      axes_num=1,
                                      fig=self.fig)

        self.widget_layout = QtWidgets.QVBoxLayout(self)
        self.widget_layout.addWidget(self.group)
        self.vertical_layout.addWidget(self.toolBar)
        self.vertical_layout.addWidget(self.fig.canvas)

        self.vertical_layout.addWidget(self.plot_options.widget)

        self.setLayout(self.widget_layout)