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方法即可
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赫凯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值