Python:提高代码效率,专注于绘图部分usign matplotlib.pyplot

时间:2018-01-16 16:00:13

标签: python python-3.x matplotlib plot charts

我简要报告了我的情况:

我在python中运行模拟,并在数据处理迭代期间绘制图表。 问题是:

  1. 我制作的动态图表运行良好,但经过一些(500次或更少)迭代后,它开始变慢,超过我为每次迭代决定的暂停时间。所以我需要关闭图形窗口以使其再次快速,但在200次迭代后,它再次变得缓慢等等......
  2. 由于我使用超过40000次迭代运行模拟,因此我的模拟时间可能会减少近1分钟。
  3. 这里有我正在谈论的代码:

    .cmi

    我希望有人有可能的解决方案。因为当我关闭图形窗口时,它然后重新打开并紧固,我想像清晰的变量可能会帮助我。但我不知道如何处理它。

    PS:另一个问题是以下行不起作用,我认为因为它与其他数据的红点重叠:

    uxs =[]
    uxP =[]
    i=0
    for z in Ti:
        # Unscendet Kalman Filter operations
        i+=1
        ukf.predict(dt, fx_args=(Te[floor(i/4.)],u))
        ukf.update(z)
        uxs.append(ukf.x.copy())
        uxP.append(ukf.P.copy())
        # Create Temporary Version of uxs and uxP, in this way I can use them as a numpy array
        uxsTemp = np.array(uxs)
        uxPTemp = np.array(uxP)
        # Dynamic graph
        plt.figure("Live Temperature")
        ax = plt.gca()
        t = np.arange(0,uxsTemp[:,0].size,1) # Create a timeline with step 1, longer as the current data number
        plt.plot(t, Ti[0:uxsTemp[:,0].size], 'ro', label='External measures (Ti(t))')
        plt.plot(t, uxsTemp[:,0],'b', label='Estimated (Ti(t))')
        if(i%50==0):
            print("mod:"+str(i%50) +"\nP:"+str(ukf.P[0,0]))
            circle1 = plt.Circle((uxsTemp[:,0].size, ukf.x[0]), sqrt(ukf.P[0,0]),    color='g', fill=True)
            ax.add_artist(circle1)
            ax.plot((uxsTemp[:,0].size, ukf.x[0]),'ys', color='black') # I put a yellow point on current point
        plt.xlim(uxsTemp[:,0].size - 10,uxsTemp[:,0].size + 5)
        plt.ylim(-5,40)
        plt.show(block=False)
        pause(0.00000001)
    

    但实际上我并不关心这一步的最后一个,第一个优先。

0 个答案:

没有答案