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

news/2024/7/21 5:12:38 标签: 青少年编程, python, 自动化, 前端, 图像处理

前置

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

在这里插入图片描述

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

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()  # 显示绘制的图形

这个代码绘制李萨如图,并将数据保存到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)

输出结果为:

在这里插入图片描述

李萨如图


http://www.niftyadmin.cn/n/5062761.html

相关文章

【洛谷 P5076】【深基16.例7】普通二叉树(简化版)题解(多重集合+lower_bound+upper_bound)

【深基16.例7】普通二叉树(简化版) 题目描述 您需要写一种数据结构,来维护一些数( 都是 1 0 9 10^9 109 以内的数字)的集合,最开始时集合是空的。其中需要提供以下操作,操作次数 q q q 不超…

网络工程师岗位太卷了不想动脑子怎么办

大家好,我是网络工程师成长日记实验室的郑老师,您现在正在查看的是网络工程师成长日记专栏,记录网络工程师日常生活的点点滴滴 网上的一个朋友说,他现在已经把华为的HCIP都已经学完了,可是他觉得非常卷。同时他知道的…

Android Live Edit 给 Android开发者带来的福音

Android Live Edit 是一个允许开发者实时更新模拟器和物理设备中的可组合内容的功能。 微信公众号【biglead】的每日提醒 随时随记 每日积累 此功能最大限度地减少了编写和构建应用程序之间的上下文切换,让开发者专注于编写代码更长时间而不会中断。 在AndroidStu…

媒体梦工厂AI智聊:轻松提升工作效率的智能助手

在信息爆炸的时代,如何快速、准确地获取和处理信息,成为提高工作效率的关键。媒体梦工厂最新推出的AI智聊功能,为您提供了全新的解决方案,让您在工作和生活中轻松提升效率。 首先,我们要进入好简单批量智剪的主页面&am…

爬虫项目(八):自动获取CSDN博客文章质量评分

本篇文章接上一篇已经获取到所有文章信息基础上:CSDN博客全部文章信息爬取 文章目录 一、书籍推荐二、单篇查询三、多篇文章查询一、书籍推荐 推荐本人书籍《Python网络爬虫入门到实战》 ,详细介绍见👉: 《Python网络爬虫入门到实战》 书籍介绍 二、单篇查询 from sele…

加拿大人工智能数据搜索平台【Secoda】完成1400万美元A轮融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于加拿大多伦多的人工智能数据搜索平台【Secoda】今日宣布已完成1400万美元A轮融资。 本轮融资由Craft Ventures领投,参与投资的投资机构有Abstract Ventures、现有投资者YCombi…

代码随想录算法训练营第五十一天 |309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费、总结

一、309.最佳买卖股票时机含冷冻期 题目链接/文章讲解:代码随想录 视频讲解:动态规划来决定最佳时机,这次有冷冻期!| LeetCode:309.买卖股票的最佳时机含冷冻期_哔哩哔哩_bilibili 思考: 1.确定dp数组&…

架构设计的技术陷阱:如何避免8个致命的错误

在绝大多数架构项目中,往往会出现一系列常见的失误,然而,透彻认识并理解这些失误,我们或许能够有效地降低它们再次发生的风险。 本文专注于探讨技术架构设计领域中常见的失误,而不深入考虑项目交付、人员因素和商业模式等方面。 一、连接!连接!连接! 几乎所有现代平…