-----
    Brief
    -----
    With the current function it will be presented a gridplot with 2 rows, where three plots are graphically
    represented

    -----------
    Description
    -----------
    Acquiring data with a right resolution ensures that posterior conclusions will be more reliable and effective.

    The current function is intended to generate a Bokeh figure with 2 rows. In the first row is shown a plot
    containing two synchronized signals acquired with different resolutions.

    The second gridplot row is divided into 2 cells, showing each one the previously presented multi resolution
    signals but in separate subfigures and in a zoomed format.

    Applied in the Notebook titled "Resolution - The difference between smooth and abrupt variations".

    ----------
    Parameters
    ----------
    time : list
        Time-axis linked to the acquired signal samples.

    signal_res_1 : list
        Acquired signal samples for the smallest resolution.

    signal_res_2 : list
        Acquired signal samples for the biggest resolution.

    sampling_rate : int
        Sampling rate of the acquisition.

def plot_compare_resolutions(time, signal_res_1, signal_res_2, sampling_rate):
    """
    -----
    Brief
    -----
    With the current function it will be presented a gridplot with 2 rows, where three plots are graphically
    represented

    -----------
    Description
    -----------
    Acquiring data with a right resolution ensures that posterior conclusions will be more reliable and effective.

    The current function is intended to generate a Bokeh figure with 2 rows. In the first row is shown a plot
    containing two synchronized signals acquired with different resolutions.

    The second gridplot row is divided into 2 cells, showing each one the previously presented multi resolution
    signals but in separate subfigures and in a zoomed format.

    Applied in the Notebook titled "Resolution - The difference between smooth and abrupt variations".

    ----------
    Parameters
    ----------
    time : list
        Time-axis linked to the acquired signal samples.

    signal_res_1 : list
        Acquired signal samples for the smallest resolution.

    signal_res_2 : list
        Acquired signal samples for the biggest resolution.

    sampling_rate : int
        Sampling rate of the acquisition.
    """

    # Figure with the two plots
    figure_8_16 = figure(x_axis_label='Time (s)', y_axis_label="Temperature (ºC)", **opensignals_kwargs("figure"))
    figure_8_16.line(time, signal_res_1, legend="8 Bits Acquisition", **opensignals_kwargs("line"))
    figure_8_16.line(time, signal_res_2, legend="16 Bits Acquisition", **opensignals_kwargs("line"))

    # Zoom window
    wind_start = sampling_rate * 110  # 110 seconds
    wind_end = sampling_rate * 150  # 150 seconds

    # Figure with 8 bits zoom
    figure_8 = figure(x_axis_label='Time (s)', y_axis_label="Temperature (ºC)", title="8 Bits Acquisition",
                      y_range=[38, 40.5], **opensignals_kwargs("figure"))
    figure_8.line(time[wind_start:wind_end], signal_res_1[wind_start:wind_end], **opensignals_kwargs("line"))

    # Figure with 16 bits zoom
    figure_16 = figure(x_axis_label='Time (s)', y_axis_label="Temperature (ºC)", title="16 Bits Acquisition",
                       y_range=[38, 40.5], **opensignals_kwargs("figure"))
    figure_16.line(time[wind_start:wind_end], signal_res_2[wind_start:wind_end],
                   **opensignals_kwargs("line"))

    # Show gridplot.
    opensignals_style([figure_8, figure_16, figure_8_16])
    grid_plot = gridplot([[figure_8_16], [figure_8, figure_16]], **opensignals_kwargs("gridplot"))
    show(grid_plot)