python之画动态图 gif效果图

2023-12-15 13:38:20
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import os


# set up matplotlib
is_ipython = 'inline' in matplotlib.get_backend()
if is_ipython:
    from IPython import display

plt.ion()

def find_csv_files(directory):
    csv_files = []  # 用于存储找到的 CSV 文件路径

    # 遍历指定路径下的所有文件和子目录
    for root, dirs, files in os.walk(directory):
        for file in files:
            # 检查文件是否以 ".csv" 结尾
            if file.endswith(".csv"):
                # 构建完整的文件路径并添加到列表中
                file_path = os.path.join(root, file)
                csv_files.append(file_path)

    return csv_files

# 指定要查找的路径
directory_to_search = 'carpet'  # 将此路径替换为你想要查找的路径

# 调用函数获取符合条件的 CSV 文件路径列表
csv_files_list = find_csv_files(directory_to_search)

# 打印找到的 CSV 文件路径
for csv_file in csv_files_list:
    print(csv_file)



def plot_curves(csv_file):
    # 读取CSV文件
    df = pd.read_csv(csv_file)

    num_rows, num_columns = df.shape
    lines = []

    # 绘制每一行的曲线图
    for i in range(num_rows):
        plt.clf() # 清空画布上的所有内容。此处不能调用此函数,不然之前画出的轨迹,将会被清空。
        y_values = df.iloc[i]  # 使用前frame+1个数据
        x_values = range(1, len(y_values) + 1)  # 横坐标使用数据个数
        line, = plt.plot(x_values, y_values)
        lines.append(line)
        plt.pause(0.00001)  # pause a bit so that plots are updated
        if is_ipython:
            display.clear_output(wait=True)
            display.display(plt.gcf())
    # 添加标题和标签
    plt.title('-5mm# Ctm Carpet')
    plt.xlabel('X')
    plt.ylabel('Y')

    # 添加图例
    plt.legend()

    # 显示图形
    plt.show()

# 用法示例
csv_file_path = csv_files_list[0] # 替换为你的CSV文件路径
plot_curves(csv_file_path)

下面这两句是动图gif的重点语句

plt.pause(0.00001)  # pause a bit so that plots are updated
        if is_ipython:
            display.clear_output(wait=True)
            display.display(plt.gcf())
        plt.clf() # 清空画布上的所有内容。此处不能调用此函数,不然之前画出的轨迹,将会被清空。

一个是暂停时间播放下一帧,一个是画布清除

文章来源:https://blog.csdn.net/qq_42244167/article/details/135014293
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。