1 定时刷新

1.1 代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import os
import time
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

image_root = "/data/image_dir/"

plt.ion() # matplotlib interactivate mode
for content in contents:
text = content.text
image_filename = content.image
print("%s\t\t%s" % (text, image_filename))

image = mpimg.imread(os.path.join(image_root, image_filename)) # read image from path
plt.imshow(image)
plt.title(text)
plt.pause(1) # pause 1 second
plt.clf() # clear the current figure

1.2 注意事项

1.2.1 plt.ion() 函数

函数 plt.ion() 是动态刷新的关键,官方函数定义如下

1
2
3
4
def ion():
"""Turn the interactive mode on."""
matplotlib.interactive(True)
install_repl_displayhook()
  • ion 函数说明为:Turn the interactivate mode on。
  • 1.2.2 plt.clf() 函数

    另外,关于 plt.clf() 函数:

    摘自 【matplotlib 动态显示图片】 的注意事项:

    在动态显示图片的过程当中,发现随着显示图片数增加,画面变得越来越卡。这是因为内存没有释放,导致变卡。

    所以加上 plt.clf() 这条语句之后能够及时清除figure。

    2 按键刷新

    2.1 代码示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import os
    import time
    import matplotlib.pyplot as plt
    import matplotlib.image as mpimg

    image_root = "/data/image_dir/"

    plt.ion() # matplotlib interactivate mode
    for content in contents:
    text = content.text
    image_filename = content.image
    print("%s\t\t%s" % (text, image_filename))

    image = mpimg.imread(os.path.join(image_root, image_filename)) # read image from path
    plt.imshow(image)
    plt.title(text)
    # plt.pause(0.1) # pause 0.1 second
    input()
    plt.clf() # clear the current figure

    2.2 注意事项

    2.2.1 input() 函数

    关于python的matplotlib库下实现按键后切换show图片

    假如用plt.ion不会卡住,但一定要用plt.pause让窗口保留,然后用input等待键盘输入后才开始下一个循环

    网上的做法如上摘录,一般会设置0.01秒pause停留。不过我发现注释掉,不做pause其实也是正常的,没发现什么影响。此处存疑。

    input() 函数接收按键输入,不输入的话,直接回车Enter结束即可,可实现按Enter键更新下一张图像及文本的效果。

    3 仅显示

    此处另附最基本的形式,即仅显示图文,无动态刷新,作参考。

    3.1 代码示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import os
    import matplotlib.pyplot as plt
    import matplotlib.image as mpimg

    image_root = "/data/image_dir/"

    image_path = os.path.join(image_root, 'demo.jpg')
    image = mpimg.imread(image_path)
    plt.imshow(image)
    plt.title("Image and text")
    plt.show()

    4 参考链接

    查阅到的类似情形的相关博客如下:

    关于python的matplotlib库下实现按键后切换show图片

    【matplotlib 动态显示图片】

    Python中matplotlib实时画图