import math import matplotlib import matplotlib.pyplot as plt import numpy as np import numexpr as ne import openpyxl as op from tkinter import ttk from matplotlib.figure import Figure class Graph: def __init__(self,check_butt_cond,x, y,lab="f(x)",xl="x",yl="y",linetype='k',lims=False): #словарь из настроек? self.__x=x self.__y=y self.__fig =Figure(figsize=(5,4),dpi=100) self.__chb=check_butt_cond 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,linestyle=linetype,) else: line=self.__ax.plot(self.__x,self.__y,label=lab,) 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,self.__y,label=lab,) """ self.draw_n_func_plot() self.draw_one_func() self.draw_subplots() self.__ax.set_xlabel(xl) self.__ax.set_ylabel(yl) 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==1 and len(self.__x)>1: for i in range(len(self.__x)): self.__ax.plot(self.__x[i],self.__y[i]) def draw_one_func(self,lab="f(x)"): if len(self.__x)==1: self.__ax.plot(self.__x,self.__y,label=lab,) def draw_subplots(self,lab="f(x)"): if self.__chb==0 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=lab,) @property def figure(self,): return self.__fig