//  [python]
def plot(
        self,
        original,
        org_label,
        exp,
        exp_label,
        vis_change=True,
        all_in_one=False,
        save_fig=None,
        figsize=(6.4, 4.8),
    ):
        """
        Basic Plot Function for visualizing Coutnerfactuals.
        Arguments:
            original np.array: Instance to be explained. Shape: `mode = time` -> `(time, feat)` or `mode = time` -> `(feat, time)`
            org_label int: Label of instance to be explained.
            exp np.array: Explanation. `mode = time` -> `(time, feat)` or `mode = time` -> `(feat, time)`
            exp_label int: Label of Explanation.
            vis_change bool: Change to be visualized as heatmap.
            all_in_one bool: Original and Counterfactual in one plot.
            save_fig str: Path to save fig at.
        """
        plt.figure(figsize=figsize)
        if all_in_one:
            ax011 = plt.subplot(1, 1, 1)
            ax012 = ax011.twinx()
            sal_02 = np.abs(original.reshape(-1) - np.array(exp).reshape(-1)).reshape(
                1, -1
            )
            if vis_change:
                sns.heatmap(
                    sal_02,
                    fmt="g",
                    cmap="viridis",
                    cbar=False,
                    ax=ax011,
                    yticklabels=False,
                )
            else:
                sns.heatmap(
                    np.zeros_like(sal_02),
                    fmt="g",
                    cmap="viridis",
                    cbar=False,
                    ax=ax011,
                    yticklabels=False,
                )
            sns.pointplot(
                x=range(0, len(original.reshape(-1))),
                y=original.flatten(),
                color="white",
                ax=ax012,
                legend=False,
                label="Original",
            )
            sns.pointplot(
                x=range(0, len(original.reshape(-1))),
                y=exp.flatten(),
                color="black",
                ax=ax012,
                legend=False,
                label="Counterfactual",
            )
            plt.legend()

        else:
            ax011 = plt.subplot(2, 1, 1)
            ax012 = ax011.twinx()
            sal_02 = np.abs(original.reshape(-1) - np.array(exp).reshape(-1)).reshape(
                1, -1
            )
            if vis_change:
                sns.heatmap(
                    sal_02,
                    fmt="g",
                    cmap="viridis",
                    cbar=False,
                    ax=ax011,
                    yticklabels=False,
                )
            else:
                sns.heatmap(
                    np.zeros_like(sal_02),
                    fmt="g",
                    cmap="viridis",
                    cbar=False,
                    ax=ax011,
                    yticklabels=False,
                )

            p = sns.pointplot(
                x=range(0, len(original.reshape(-1))),
                y=original.flatten(),
                color="white",
                ax=ax012,
                label=f"{org_label}",
            )
            p.set_ylabel("Original")

            ax031 = plt.subplot(2, 1, 2)
            ax032 = ax031.twinx()
            sal_02 = np.abs(original.reshape(-1) - np.array(exp).reshape(-1)).reshape(
                1, -1
            )
            if vis_change:
                sns.heatmap(
                    sal_02,
                    fmt="g",
                    cmap="viridis",
                    cbar=False,
                    ax=ax031,
                    yticklabels=False,
                )
            else:
                sns.heatmap(
                    np.zeros_like(sal_02),
                    fmt="g",
                    cmap="viridis",
                    cbar=False,
                    ax=ax011,
                    yticklabels=False,
                )

            p = sns.pointplot(
                x=range(0, len(original.reshape(-1))),
                y=exp.flatten(),
                color="white",
                ax=ax032,
                label=f"{exp_label}",
            )
            p.set_ylabel("Counterfactual")
        if save_fig is None:
            plt.show()
        else:
            plt.savefig(save_fig)