• 绘制李萨如图,数据保存excel,txt


    前置

    看到网络上绘制的这么漂亮的数学图形,觉得能够用一个代码绘制全部的这些图形,就能提高不少效率,所以于是就心血来潮:

    在这里插入图片描述

    这是一个绘制李萨如图并保存数据的Python代码示例。下面是每行注释的详细解释

    import os  # 导入操作系统模块
    from datetime import datetime  # 导入日期时间模块
    import numpy as np  # 导入NumPy库
    import matplotlib.pyplot as plt  # 导入Matplotlib库
    import pandas as pd  # 导入Pandas库
    
    # 创建文件夹函数
    def create_directory(directory):
        if not os.path.exists(directory):  # 如果目录不存在
            os.makedirs(directory)  # 创建目录
    
    # 检索可用英语字体函数
    def search_english_font(directory):
        font_files = os.listdir(directory)  # 获取目录下的文件列表
        for file in font_files:
            if file.endswith(".ttf"):  # 如果文件以".ttf"结尾
                return os.path.join(directory, file)  # 返回字体文件的完整路径
        return None  # 如果未找到可用的英语字体文件,返回None
    
    # 绘制李萨如图函数
    def plot_lissajous(a, b, delta):
        t = np.linspace(0, 2*np.pi, 1000)  # 在0到2*pi之间生成1000个点
        x = np.sin(a*t + delta)  # 计算x坐标
        y = np.sin(b*t)  # 计算y坐标
        fig, ax = plt.subplots()  # 创建图形和坐标轴对象
        ax.plot(x, y)  # 绘制曲线
        ax.axis("equal")  # 设置坐标轴刻度相等
        ax.set_title("Lissajous Curve (a={}, b={}, delta={})".format(a, b, delta))  # 设置标题
        return fig, ax  # 返回图形和坐标轴对象
    
    # 保存数据到excel和txt文件函数
    def save_data(data, filename):
        excel_path = os.path.join(directory_path, "代码print相关/结构图", filename + ".xlsx")  # 构造Excel文件路径
        data.to_excel(excel_path, index=False)  # 将数据保存到Excel文件
        print("数据已保存到:" + excel_path)  # 打印保存成功的消息
    
        txt_path = os.path.join(directory_path, "代码print相关/结构图", filename + ".txt")  # 构造txt文件路径
        data.to_csv(txt_path, sep="\t", index=False)  # 将数据保存到txt文件
        print("数据已保存到:" + txt_path)  # 打印保存成功的消息
    
    # 设置目录路径和文件名前缀
    directory_path = "/storage/emulated/0/文件/"
    prefix = "编号.库样式."
    
    # 构造当前时间戳
    timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
    
    # 组合文件名前缀
    filename_prefix = prefix + "Lissajous."
    
    # 组合文件名
    filename = filename_prefix + timestamp
    
    # 构造完整文件路径
    file_path = os.path.join(directory_path, "代码print相关/结构图", filename)
    
    # 创建目录
    create_directory(os.path.dirname(file_path))
    
    # 检查中文字体是否存在
    chinese_font_path = "/storage/emulated/0/文件/字体大全/字体包/宋体.ttf"
    if not os.path.exists(chinese_font_path):  # 如果中文字体文件不存在
        chinese_font_path = "/storage/emulated/0/文件/字体大全/字体包/"  # 设置备用路径
    
    # 检索可用英语字体
    english_font_directory = "/storage/emulated/0/文件/字体大全/"
    english_font_path = search_english_font(english_font_directory)
    
    # 打印注释
    print("这个代码文件使用了以下字体:")
    print("- 中文字体:" + chinese_font_path)
    if english_font_path:
        print("- 英文字体:" + english_font_path)
    
    # 绘制李萨如图并保存数据
    a = 3
    b = 4
    deltas = np.linspace(0, 2*np.pi, 9)[:-1]  # 在0到2*pi之间生成8个delta值
    for i, delta in enumerate(deltas):
        fig, ax = plot_lissajous(a, b, delta)  # 绘制李萨如图
        data = pd.DataFrame({"x": ax.lines[0].get_xdata(), "y": ax.lines[0].get_ydata()})  # 获取曲线数据
        save_data(data, filename + "." + str(i+1))  # 保存数据到文件
    
    plt.show()  # 显示绘制的图形
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84

    这个代码绘制李萨如图,并将数据保存到Excel和txt文件中。每行有趣的注释都描述了代码的功能和作用,这样就能更好地理解代码的逻辑和实现。

    例中仅保存数据到Excel和txt文件,并未包含保存图片的部分。若保存图片文件,可以添加以下代码来保存图片:
    # 组合图片文件名
    image_filename = filename_prefix + "Lissajous_" + str(i+1) + ".png"
    
    # 构造图片文件路径
    image_path = os.path.join(directory_path, "代码print相关/结构图", image_filename)
    
    # 保存图片
    fig.savefig(image_path)
    print("图片已保存到:" + image_path)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出结果为:

    在这里插入图片描述

    李萨如图

  • 相关阅读:
    FasterTransformer在linux系统中的安装教程(ubuntu系统)
    ABAP tRFC和qRFC
    做个清醒的程序员之要不要做程序员
    工业物联网案例:智能工厂设备无人值守系统方案
    mysql-4-锁机制
    JavaWeb之初识Tomcat
    UDS诊断系列介绍02-传输层CANTP
    一种基于超像素和生成对抗网络的视网膜血管分割方法
    Apache Doris 系列: 入门篇-安装部署
    Asp-Net-Core开发笔记:进一步实现非侵入性审计日志功能
  • 原文地址:https://blog.csdn.net/weixin_73675558/article/details/133494869