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