python动画画图效果plt.ion

景永望
2023-12-01

1. 画函数

转载自:https://www.jianshu.com/p/5392170c5fee

import matplotlib.pyplot as plt
import numpy as np

if __name__ == '__main__' :
    t1 = np.arange(0, 30, 0.1)
    plt.ion() # interactive on互动打开
    for i in range(100):
        plt.ylim(-10, 10) #此处限制了一下y轴坐标最大最小值,防止刻度变化,不利于观察。(也可以不指定)
        plt.plot(t1, 0.1*i*np.sin(t1 + 0.1 * i))
        plt.plot(t1, 0.1 * (i -100) * np.cos(t1 + 0.2 * i))
        plt.pause(0.01) #暂停一段时间,否则清屏过快会导致只看到白色面板
        plt.clf() #清除上次结果
    plt.ioff()
    plt.show()

也可以动态改变坐标刻度

import matplotlib.pyplot as plt
import numpy as np

if __name__ == '__main__' :
    t1 = np.arange(0, 30, 0.1)
    plt.ion()
    for i in range(100):
        plt.xlim(-10, i) #此处限制了一下y轴坐标最大最小值,防止刻度变化,不利于观察。
        plt.plot(t1, 0.1*i*np.sin(t1 + 0.1 * i))
        plt.plot(t1, 0.1 * (i -100) * np.cos(t1 + 0.2 * i))
        plt.pause(0.01) #暂停一段时间,否则清屏过快会导致只看到白色面板
        plt.clf() #清除上次结果
    plt.ioff()
    plt.show()  

注:对于上面两个,实际上我们使用了plt.pause和plt.clf,效果跟plt.ion一样的,所以可以把plt.ion和plt.ioff去掉。

另一个例子

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-10,1,10)
def y(i):
    return i**2

# plt.ion()

for i in x:
    plt.pause(0.3)
    plt.scatter(i,y(i),c='r')

# plt.ioff()
plt.show()

1. 画图片

import matplotlib.pyplot as plt
plt.ion()
plt.imshow(img_seg)
plt.pause(0.3)
plt.imshow(masks)
plt.ioff()
plt.show()
 类似资料: