def test_line_plot_handle_calibrated_x_axis_with_negative_scale(self):
     with TestContext.create_memory_context() as test_context:
         document_controller = test_context.create_document_controller()
         document_model = document_controller.document_model
         display_panel = document_controller.selected_display_panel
         data = numpy.random.randn(100)
         data_item = DataItem.DataItem(data)
         data_item.set_xdata(
             DataAndMetadata.new_data_and_metadata(
                 data,
                 dimensional_calibrations=[
                     Calibration.Calibration(0, -1.0, "e")
                 ]))
         document_model.append_data_item(data_item)
         display_item = document_model.get_display_item_for_data_item(
             data_item)
         display_panel.set_display_panel_display_item(display_item)
         display_panel.display_canvas_item.layout_immediate((640, 480))
         axes = display_panel.display_canvas_item._axes
         drawing_context = DrawingContext.DrawingContext()
         calibrated_data_min = axes.calibrated_data_min
         calibrated_data_max = axes.calibrated_data_max
         calibrated_data_range = calibrated_data_max - calibrated_data_min
         LineGraphCanvasItem.draw_line_graph(
             drawing_context, 480, 640, 0, 0, data_item.xdata,
             calibrated_data_min, calibrated_data_range,
             axes.calibrated_left_channel, axes.calibrated_right_channel,
             axes.x_calibration, "black", "black", None, axes.data_style)
         # ensure that the drawing commands are sufficiently populated to have drawn the graph
         self.assertGreater(len(drawing_context.commands), 100)
 def test_narrow_line_plot_with_nans_is_drawn_properly(self):
     with TestContext.create_memory_context() as test_context:
         document_controller = test_context.create_document_controller()
         document_model = document_controller.document_model
         display_panel = document_controller.selected_display_panel
         data = numpy.random.rand(200)
         data[0] = numpy.nan
         data_item = DataItem.DataItem(data)
         data_item.set_xdata(DataAndMetadata.new_data_and_metadata(data))
         document_model.append_data_item(data_item)
         display_item = document_model.get_display_item_for_data_item(
             data_item)
         display_panel.set_display_panel_display_item(display_item)
         display_panel.display_canvas_item.layout_immediate((100, 480))
         axes = display_panel.display_canvas_item._axes
         drawing_context = DrawingContext.DrawingContext()
         calibrated_data_min = axes.calibrated_data_min
         calibrated_data_max = axes.calibrated_data_max
         calibrated_data_range = calibrated_data_max - calibrated_data_min
         display_xdata = display_panel.display_canvas_item.line_graph_canvas_item.calibrated_xdata
         LineGraphCanvasItem.draw_line_graph(
             drawing_context, 480, 100, 0, 0, display_xdata,
             calibrated_data_min, calibrated_data_range,
             axes.calibrated_left_channel, axes.calibrated_right_channel,
             axes.x_calibration, "black", "black", None, axes.data_style)
         # ensure that the drawing commands are sufficiently populated to have drawn the graph
         self.assertGreater(len(drawing_context.commands), 100)
예제 #3
0
 def test_line_plot_handles_data_below_one_in_log_scale(self):
     document_model = DocumentModel.DocumentModel()
     document_controller = DocumentController.DocumentController(self.app.ui, document_model, workspace_id="library")
     with contextlib.closing(document_controller):
         display_panel = document_controller.selected_display_panel
         data = numpy.random.rand(100)
         data_item = DataItem.DataItem(data)
         data_item.set_xdata(DataAndMetadata.new_data_and_metadata(data))
         document_model.append_data_item(data_item)
         display_item = document_model.get_display_item_for_data_item(data_item)
         display_item.set_display_property("y_style", "log")
         display_panel.set_display_panel_display_item(display_item)
         display_panel.display_canvas_item.layout_immediate((640, 480))
         axes = display_panel.display_canvas_item._axes
         self.assertEqual(axes.data_style, "log")
         drawing_context = DrawingContext.DrawingContext()
         calibrated_data_min = axes.calibrated_data_min
         calibrated_data_max = axes.calibrated_data_max
         calibrated_data_range = calibrated_data_max - calibrated_data_min
         display_xdata = display_panel.display_canvas_item.line_graph_canvas_item.calibrated_xdata
         LineGraphCanvasItem.draw_line_graph(drawing_context, 480, 640, 0, 0, display_xdata, calibrated_data_min, calibrated_data_range, axes.calibrated_left_channel, axes.calibrated_right_channel, axes.x_calibration, "black", "black", None, axes.data_style)
         # ensure that the drawing commands are sufficiently populated to have drawn the graph
         self.assertGreater(len(drawing_context.commands), 100)