在每个步骤的for循环中绘制matplotlib图

时间:2015-11-25 20:28:26

标签: python matplotlib plot

我正在尝试使用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

2 个答案:

答案 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。