Python 使用matplotlib模块连续显示图片

我也不知道为什么这样写有的需要show(),循环的时候就不用,求大给我讲解,另外,循环显示多张图片时该如何写才能优雅

显示一张简单的代码如下

from matplotlib import pyplot as plt
import numpy as np
plt.imshow(np.random.randint(0, 2, (2, 2)))
plt.show()

在这里插入图片描述
连续的一张图变化这样写

from matplotlib import pyplot as plt
import numpy as np
while 1:
    plt.cla()
    plt.imshow(np.random.randint(0, 2, (2, 2)))
    plt.pause(0.1)

有时候需要两张图一起对比着看,我写了这样的代码,但是图片多了或者图片大了就有卡顿的感觉,我觉得是内存没清除掉,求大佬指导

from matplotlib import pyplot as plt
import numpy as np
while 1:
    plt.cla()
    ax1 = plt.subplot(1, 2, 1)
    ax1.imshow(np.random.randint(0, 2, (2, 2)))
    ax2 = plt.subplot(1, 2, 2)
    ax2.imshow(np.random.randint(0, 2, (2, 2)))
    plt.pause(0.1)
    ax1.cla()
    ax2.cla()

在这里插入图片描述

连续地看梅尔频谱图,以及音高和能量
在这里插入图片描述

# 放在外面
fig, axes = plt.subplots(1, 1, squeeze=False)

def showww(f0, mel_spectrogram, energy):
    def add_axis(fig, old_ax, offset=0):
        ax = fig.add_axes(old_ax.get_position(), anchor='W')
        ax.set_facecolor("None")
        return ax

    axes[0][0].imshow(mel_spectrogram, origin='lower')
    axes[0][0].set_aspect(2.5, adjustable='box')
    axes[0][0].set_ylim(0, 80)
    axes[0][0].set_title('mel_spectrogram', fontsize='medium')
    axes[0][0].tick_params(labelsize='x-small', left=False, labelleft=False)
    axes[0][0].set_anchor('W')

    ax1 = add_axis(fig, axes[0][0])
    ax1.plot(f0, color='tomato')
    ax1.set_xlim(0, mel_spectrogram.shape[1])
    ax1.set_ylim(0, hp.f0_max)
    ax1.set_ylabel('F0', color='tomato')
    ax1.tick_params(labelsize='x-small', colors='tomato', bottom=False, labelbottom=False)

    ax2 = add_axis(fig, axes[0][0], 1.2)
    ax2.plot(energy, color='darkviolet')
    ax2.set_xlim(0, mel_spectrogram.shape[1])
    ax2.set_ylim(hp.energy_min, hp.energy_max)
    ax2.set_ylabel('Energy', color='darkviolet')
    ax2.yaxis.set_label_position('right')
    ax2.tick_params(labelsize='x-small', colors='darkviolet', bottom=False, labelbottom=False, left=False,
                    labelleft=False, right=True, labelright=True)

	# 遍历代码
    plt.ion()
    plt.pause(1)
    ax1.cla()
    ax2.cla()
    ax1.axis('off')
    ax2.axis('off')

# 循环showww方法即可
posted @   赫凯  阅读(638)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示