95 lines
2.6 KiB
Python
95 lines
2.6 KiB
Python
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
|
|
|
|
|