【问题标题】:Plotting changing graphs with matplotlib使用 matplotlib 绘制变化的图形
【发布时间】:2020-03-08 09:24:20
【问题描述】:

所以我一直试图通过一个循环来更新每次迭代。我的代码的精简版如下:

  1 import matplotlib.pyplot as plt
  2 import numpy as np
  3 
  4 x = np.linspace(0, 9, 10)
  5 for j in range(10):
  6     y = np.random.random(10)
  7     plt.plot(x,y)
  8     plt.show()
  9     plt.pause(1)
 10     plt.clf()

我的问题是我必须在创建下一个情节之前关闭每个情节;似乎情节卡在 plt.show() 上,而我希望有一个新情节每秒替换当前情节,而无需我的交互。我咨询了以下问题:

When to use cla(), clf() or close() for clearing a plot in matplotlib?

Python plt: close or clear figure does not work

Matplotlib pyplot show() doesn't work once closed

但似乎没有一个解决方案对我有用。任何帮助将不胜感激!

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    你应该使用plt.ion()设置交互模式,并使用draw来更新

    import matplotlib.pyplot as plt
    import numpy as np
    
    plt.ion()
    fig=plt.figure()
    
    x = np.linspace(0, 9, 10)
    for j in range(10):
        y = np.random.random(10)
        plt.plot(x,y)
        fig.canvas.draw()
        plt.pause(1)
        plt.clf()
    

    link to tutorial

    请注意,它可能不适用于所有平台;我在 Pythonista/ios 上测试过,没有按预期工作。

    来自

    matplotlib tutorial

    注意 交互模式适用于 ipython 和普通 python shell 中的合适后端,但在 IDLE IDE 中不起作用。如果默认后端不支持交互,则可以使用什么是后端?中讨论的任何方法显式激活交互式后端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-24
      • 2017-02-01
      • 2016-08-17
      • 1970-01-01
      • 2023-02-09
      • 2020-09-17
      • 2021-11-21
      相关资源
      最近更新 更多