def plot_segmentation_dictionary(self, x, segmentation_dictionary, figsize=(10, 5)):
        """ 
            Utility method used to visualize how the segmentation dictionary interacts with the time series.

            :param data_frame: The data frame. It should have x, y, and z columns.
            :type data_frame: pandas.DataFrame
            :param segmentation_dictionary: A dictionary of the form {'signal_type': [(from, to), (from, to)], ..., 'signal_type': [(from, to), (from, to)]}.
            :type segmentation_dictionary: dict
            :param figsize: The size of the figure where we will plot the segmentation on top of the provided time series ((10, 5) default).
            :type figsize: tuple
        """
        data = x
        
        fig, ax = plt.subplots()
        fig.set_size_inches(figsize[0], figsize[1])

        # fix this!!
        colors = 'bgrcmykwbgrcmykwbgrcmykw'

        data.plot(ax=ax)

        for i, (k, v) in enumerate(segmentation_dictionary.items()):
            for start, end in v:
                if type(start) != np.datetime64:
                    start = data.index.values[start]
                    end = data.index.values[end]

                plt.axvspan(start, end, color=colors[i], alpha=0.5)

        legend = [mpatches.Patch(color=colors[i], label="{}".format(k)) for i, k in enumerate(segmentation_dictionary.keys())]

        plt.legend(handles=legend)

        plt.show()