Получение ползунка для изменения наиболее подходящего графика - PullRequest
0 голосов
/ 11 марта 2020

Я строю координаты 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')
'''

Любая помощь приветствуется

...