import scipy.io
import matplotlib.pyplot as plt
import imageio
import numpy as np

data = scipy.io.loadmat("/文件路径/Sol.mat")

# 提取数据
t_current = data['t'].flatten()
XX, YY = np.meshgrid(data['x'].flatten(), data['y'].flatten())
u_pred_plot_final = data['u_pred_plot_final']
v_pred_plot_final = data['v_pred_plot_final']
p_pred_plot_final = data['p_pred_plot_final']

# 创建保存GIF的函数
def save_gif(images, filename):
    imageio.mimsave(filename, images, fps=5)

# 初始化存储每个子图的图像列表
uvp_pred_images = []

for k in range(len(t_current)):
    fig = plt.figure()
    plt.subplots_adjust(wspace=1, hspace=1)
    fig.suptitle('t = ' + str(t_current[k]), fontsize=15)

    plt.subplot(3, 1, 1)
    plt.pcolor(XX, YY, u_pred_plot_final[:, :, k], cmap='viridis')
    plt.axis('equal')
    plt.colorbar()
    plt.title('u_pred')
    plt.show()

    plt.subplot(3, 1, 2)
    plt.pcolor(XX, YY, v_pred_plot_final[:, :, k], cmap='Blues')
    plt.axis('equal')
    plt.colorbar()
    plt.title('v_pred')

    plt.subplot(3, 1, 3)
    plt.pcolor(XX, YY, p_pred_plot_final[:, :, k], cmap='cividis')
    plt.axis('equal')
    plt.colorbar()
    plt.title('p_pred')

    fig.canvas.draw()
    uvp_pred_images.append(np.array(fig.canvas.renderer.buffer_rgba()))

    plt.close(fig)

# 保存为GIF
save_gif(uvp_pred_images, "uvp_pred.gif")


print("GIFs were successfully created and saved.")

Remark: 如果用了plt.axis('equal')后画的图画布留白,可能是因为设置了画布大小fig = plt.figure(figsize=(5, 15)),把这个去掉直接用fig = plt.figure()

在这里插入图片描述
上述代码根据.mat提供的数据生成的gif。(这里是Natural Outflow Boundary Conditions)

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部