from matplotlib.figure import Figure


class Graph:
    def __init__(
        self, x, y, labels, mult_subplots=0, xl="x", yl="y", linetype="k", lims=False
    ):
        # словарь из настроек?
        self.labels = labels
        self.__x = x
        self.__y = y
        self.__fig = Figure(figsize=(5, 4), dpi=100)
        self.__chb = mult_subplots
        self.__ax = self.__fig.add_subplot()

        # сделать отслеживание за состояние кнопок потом
        """
        if self.__chb==0:
            if len(self.__x)>1:
                for i in range(len(self.__x)):
                    n=int(f"{len(self.__x)}1{i+1}")
                
                    axes=self.__fig.add_subplot(n)
                    axes.set_title(f"График №{i+1}")
                    c=axes.plot(self.__x[i],self.__y[i],label=lab)
            else:
                line=self.__ax.plot(self.__x[0],self.__y[0],label=lab,)
                print(self.__x)

        else:
            if len(self.__x)>1: #много графиков на одном холсте
                for i in range(len(self.__x)):
                    self.__ax.plot(self.__x[i],self.__y[i])
                    
            
            else:

                line=self.__ax.plot(self.__x[0],self.__y[0],label=lab,)
                print(self.__x)
        """
        self.draw_n_func_plot()
        self.draw_one_func()
        self.draw_subplots()

        self.__ax.set_xlabel(xl)
        self.__ax.set_ylabel(yl)
        self.__ax.legend()
        self.figure.tight_layout()

    def add_vline(ax, x=0, ymin=0, ymax=1):
        ax.axvline(x, ymin, ymax)
        # принимаем плот и на нем же рисуем

    def add_hline(
        ax,
        y=0,
        xmin=0,
        xmax=1,
    ):
        ax.axhline(y, xmin, xmax)

    def draw_n_func_plot(
        self,
    ):  # много графиков на одном холсте
        if self.__chb == 0 and len(self.__x) > 1:
            for i in range(len(self.__x)):
                self.__ax.plot(self.__x[i], self.__y[i], label=self.labels[i])

    def draw_one_func(
        self,
    ):
        if len(self.__x) == 1:
            self.__ax.plot(self.__x[0], self.__y[0], label=self.labels[0])  #

    def draw_subplots(
        self,
    ):
        if self.__chb == 1 and len(self.__x) > 1:
            for i in range(len(self.__x)):
                n = int(f"{len(self.__x)}1{i+1}")

                axes = self.__fig.add_subplot(n)
                axes.set_title(f"График №{i+1}")
                axes.plot(self.__x[i], self.__y[i], label=self.labels[i])

    @property
    def figure(
        self,
    ):
        return self.__fig
