def test_basic(self, tmpdir, deterministic_uuid, image_tests):

        # A test that uses all the types of layers. This includes an optional
        # pixel-by-pixel image test that is enabled when using the --image-tests
        # command-line argument.

        figure = InteractiveTimeSeriesFigure()
        figure.add_markers(time_series=self.ts, column='flux', label='Markers')
        figure.add_line(time_series=self.ts, column='flux', label='Line')
        figure.add_markers(time_series=self.ts, column='flux', error='error', label='Markers with Errors')
        figure.add_vertical_line(self.ts.time[3], label='Vertical Line')
        figure.add_vertical_range(self.ts.time[0], self.ts.time[-1], label='Vertical Range')
        figure.add_horizontal_line(3, label='Horizontal Line')
        figure.add_horizontal_range(5, 6, label='Horizontal Range')
        figure.add_range(time_series=self.ts, column_lower='flux', column_upper='error', label='Range')
        figure.add_text(time=self.ts.time[2], value=float(self.ts['flux'][0]), text='My Label', label='Range')
        figure.ylabel = 'Intensity'

        json_file = tmpdir.join('figure.json').strpath
        plot_prefix = tmpdir.join('figure').strpath
        figure.save_vega_json(json_file)
        if image_tests:
            interactive_screenshot(json_file, plot_prefix)
            figure.save_static(plot_prefix + '_mpl', format='png')

        compare_to_reference_json(tmpdir, 'basic', image_tests=image_tests)
    def test_mixed_time_axes(self, tmpdir, deterministic_uuid, image_tests):

        # An extensive test that includes different types of time axes in
        # different views.

        fig = InteractiveTimeSeriesFigure(title='By time of observation')
        fig.ylabel = 'Radial Velocity (km/s)'

        # Absolute time
        fig.add_markers(time_series=self.ts, column='flux', color='orange', error='error', size=50)
        fig.add_line(time_series=self.ts, column='flux', color='black')

        # Phase
        view1 = fig.add_view(title='By phase', empty=True, time_mode='phase')
        view1.add_markers(time_series=self.ts, time_column='phase', column='flux', color='orange', error='error', size=50)

        # Relative time
        view2 = fig.add_view(title='By relative time', empty=True, time_mode='relative')
        view2.add_markers(time_series=self.ts, time_column='relative_s', column='flux', color='orange', error='error', size=50)

        # Absolute time (with julian date formatting)
        view3 = fig.add_view(title='Julian Date formatting')
        view3.time_format = 'jd'

        # Phase (with degrees formatting)
        view4 = fig.add_view(title='By phase', empty=True, time_mode='phase')
        view4.add_markers(time_series=self.ts, time_column='phase', column='flux', color='orange', error='error', size=50)
        view4.time_format = 'degrees'

        # Phase (with radians formatting)
        view5 = fig.add_view(title='By phase', empty=True, time_mode='phase')
        view5.add_markers(time_series=self.ts, time_column='phase', column='flux', color='orange', error='error', size=50)
        view5.time_format = 'radians'

        json_file = tmpdir.join('figure.json').strpath
        plot_prefix = tmpdir.join('figure').strpath
        fig.save_vega_json(json_file)
        if image_tests:
            interactive_screenshot(json_file, plot_prefix)
            fig.save_static(plot_prefix + '_mpl', format='png')

        compare_to_reference_json(tmpdir, 'mixed_time_axes', image_tests=image_tests)