【问题标题】:Python: how to display dynamically changing graph matplotlibPython:如何显示动态变化的图形 matplotlib
【发布时间】:2020-10-15 13:56:14
【问题描述】:

我想在我的行中绘制折线图行并且我希望上一行被下一行更新(在同一帧上)。 这是输入的示例:

这是我的代码:

def openB():
bmFile = filedialog.askopenfile(mode='r',
                                    filetypes=(("CSV file", "*.csv"), ("All files", "*.*")),
                                    title="Select a CSV file")

bmFile2 = pd.read_csv(bmFile, header=[2])

selectCol = bmFile2.iloc[0:,3:]

selectCol.T.plot()
plt.show()

我想绘制每一行,这就是为什么我在 selectCol 上使用 Transpose 方法。

为了逐行绘制(动态变化),我应该使用什么功能? FuncAnimation 还是 for 循环(范围)? 以及如何?

谢谢。 非常感谢:)

【问题讨论】:

    标签: python python-3.x matplotlib tkinter graph


    【解决方案1】:

    您可以使用plt.clf 和plt.draw 动态绘制它。

    例如如下:

    import matplotlib.pyplot as plt
    import numpy as np
    
    file = np.random.normal(5,5,(1000,100))
    
    for row in file:
        plt.clf() # Clear the current figure
        
        plt.plot(row) # Calculate and plot all you want
    
        plt.draw()
        plt.pause(0.1) # Has to pause for a non zero time
    
    plt.show() # When all is done
    

    PS:ax.clear() 会清轴,plt.clf() 会清空整个图形。

    【讨论】:

      【解决方案2】:

      这显示了如何动态绘制每一行:

      with open('file.csv','r') as f:
          lines = f.read().splitlines()
      
      for line in lines:
          y = line.split(',')[2:]
          x = np.linspace(0,1,num=len(y))
          plt.plot(x,y)
      

      我知道这没有动画效果,但它有助于解决动态问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-21
        • 2017-11-29
        • 2015-05-21
        • 2017-11-24
        • 1970-01-01
        • 1970-01-01
        • 2017-02-01
        • 1970-01-01
        相关资源
        最近更新 更多