我正在尝试使用Python从各种不同的文件中分析数据。所以我使用了一个如下所示的函数:
def multi_estimate(a , b):
ids = np.linspace(0.3 , 0.7 ,num = 17, endpoint = True) #files name identifier
for i in ids:
dat = np.loadtxt('Qn'+ str(int(i*1000))+'.txt') # reading filename
q = np.array(dat[:,1]); # take the second column
x , y = hurst(q); # calculate lags and R/S values for Hurst exponent
coef = linear_fit(x, y , a , b) # make a linear fit and estimate slope
return None
在我的线性拟合函数中,我正在绘制结果,因为我想检查拟合是否正确完成并且点是直线。如果没有正确完成,我想通过在我的函数中添加一些代码来进行新的修改。我的问题是在执行期间出现空数字,只有当for循环结束时,才会填充图表。
我怎样才能让每个情节出现在第一步中,检查它然后继续下一个?
我的健身功能是:
def linear_fit(x, y, xmin, xmax):
idx1 = (np.abs(x-xmin)).argmin()
idx2 = (np.abs(x-xmax)).argmin()
coef = np.polyfit(np.log2(x[idx1:idx2+1]), np.log2(y[idx1:idx2+1]), 1)
plt.figure()
plt.plot(np.log2(x), np.log2(y), 'r+', label = 'data')
plt.plot(np.log2(x[idx1:idx2+1]) , coef[1]+coef[0]*np.log2(x[idx1:idx2+1]), label = 'H = %1.2f' %coef[0] )
plt.grid()
plt.legend(loc = 'best')
plt.show()
return coef
答案 0 :(得分:1)
嗯,这适合我。
import matplotlib.pyplot as pl
def test(x):
pl.figure()
pl.plot(x)
pl.show()
for i in range(1,3):
eje = range(i*10)
test(eje)
我为每个函数调用得到一个图。
答案 1 :(得分:0)
事实证明,当我从终端使用Ipython时,一切正常,因为它们可以工作。当我使用Canopy时出现问题,所以我猜这是一个Canopy Bug。