Я строю координаты x и y из файла данных в python. Затем я рисую лучшую полиномиальную линию через точки данных, порядок полиномов может варьироваться от n = 1 до n = 10. Мне нужен ползунок, который изменит n, а затем изменит график.
Вот текущий код, пожалуйста, игнорируйте кнопки, поскольку они еще не назначены:
'' '
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider,Button
fig=plt.figure(figsize=(8,5))
ax=plt.axes((0.2,0.2,0.75,0.75))
plt.title('Polynomial fit (select order and data file)')
n=2
def getData(filename):
x = filename[:,0]
y = filename[:,1]
plt.xlabel('x')
plt.ylabel('y')
plt.plot(x,y,'r*')
return x,y
def sliderCallback(n):
axesHandleFit.set_ydata(yfit1 = np.polyval(p,yfit)) # set new y-coordinates of the plotted points
plt.plot(xfit,yfit)
return(xdata,ydata)
def fitData(x,y,n):
p = np.polyfit(x,y,n)
xfit = np.linspace(min(x),max(x),100)
yfit = np.polyval(p,xfit)
axesHandleFit=plt.plot(xfit,yfit)
return (xfit,yfit)
filename= np.loadtxt('data.txt')
data= getData(filename)
xfit,yfit = fitData(filename[:,0],filename[:,1],n)
def sliderCallback(n):
n= sliderHandle
display(n)
axesHandleFit.set_ydata(yfit1 = np.polyval(p,yfit))
plt.plot(xfit,yfit1)
return(yfit)
def radioCallback(xdata,ydata):
getdata(filename)
slideraxes=fig.add_axes([0.32,0.05,0.5,0.05])
sliderHandle = Slider(slideraxes,valmin=1,valmax=10,valinit=2,valfmt="%i",
label='n order slider')
radioaxes=fig.add_axes([0.04,0.5,0.1,0.1])
radioaxes1=fig.add_axes([0.04,0.4,0.1,0.1])
radioaxes2=fig.add_axes([0.04,0.3,0.1,0.1])
radioHandle=Button(radioaxes,'data.txt')
radioHandle2=Button(radioaxes1,'data1.txt')
radioHandle3=Button(radioaxes2,'data2.txt')
'''
Любая помощь приветствуется