使用matplotlib库进行可视化的动态显示。生成一个点,并且该点沿着sin函数进行运动,点在移动时显示该点的坐标,且坐标跟随该点进行移动

使用matplotlib库进行可视化的动态显示。生成一个点,并且该点沿着sin函数进行运动,点在移动时显示该点的坐标,且坐标跟随该点进行移动

设计要求:
1) 绘制sin函数(用红色曲线绘制)。
2) 在sin函数中添加动画点,该点为蓝色圆点。
3) 往动画中添加效果:添加文本显示(对移动的点的坐标进行显示),并且文本跟着该点进行移动。
4) 要求关键代码有注释。每个函数的声明前加上注释, 描述该函数的功能和用途;类和对象有属性注释、方法注释。
5) 代码中建议做异常处理。

代码如下:

import numpy as np  # 导入NumPy库,用于生成sin函数的坐标
import matplotlib.pyplot as plt  # 导入matplotlib库,用于绘图
import matplotlib.animation as animation  # 导入matplotlib的动画模块
import matplotlib
matplotlib.use('TkAgg')
class SinAnimation:
    def __init__(self):
        # 创建图形和子图
        self.fig, self.ax = plt.subplots()
        # 生成sin函数的x和y坐标
        self.x = np.linspace(0, 2*np.pi, 100)
        self.y = np.sin(self.x)
        # 绘制sin函数的红色曲线
        self.line, = self.ax.plot(self.x, self.y, 'r', label='sin(x)')
        # 添加动画点,用蓝色圆点表示
        self.point, = self.ax.plot(self.x[0], self.y[0], 'bo', markersize=8)
        # 添加文本标签,显示点的坐标,并初始化为当前点的坐标
        self.text = self.ax.text(self.x[0], self.y[0], f'({self.x[0]:.2f}, {self.y[0]:.2f})', fontsize=12)

    def update(self, frame):
        try:
            # 更新动画点的位置
            self.point.set_data(self.x[frame], self.y[frame])
            # 更新文本标签的位置和内容
            self.text.set_position((self.x[frame], self.y[frame]))
            self.text.set_text(f'({self.x[frame]:.2f}, {self.y[frame]:.2f})')
            return self.point, self.text
        except Exception as e:
            print(f"An error occurred: {e}")

    def animate(self):
        try:
            # 创建动画对象并执行动画
            ani = animation.FuncAnimation(self.fig, self.update, frames=range(len(self.x)), blit=True, interval=100)
            plt.show()
        except Exception as e:
            print(f"An error occurred during animation: {e}")

# 创建SinAnimation实例并执行动画
sin_anim = SinAnimation()
sin_anim.animate()

本代码附带课程设计论文!!!!

你可能感兴趣的:(python,numpy,matplotlib)