Python+Matplotlib创建高等数学上册P2页例2交互动画

news2024/10/4 14:16:24

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, CheckButtons

# 创建图形和坐标轴
fig, ax = plt.subplots(figsize=(10, 8))
plt.subplots_adjust(left=0.1, bottom=0.2)

# 设置图表
ax.set_xlim([-1.5, 1.5])
ax.set_ylim([-1.5, 1.5])
ax.set_aspect('equal')
ax.grid(True)
ax.axhline(y=0, color='black', linestyle='-', alpha=0.3)
ax.axvline(x=0, color='black', linestyle='-', alpha=0.3)

# 创建圆
theta = np.linspace(0, 2*np.pi, 100)
x = np.cos(theta)
y = np.sin(theta)
circle, = ax.plot(x, y, 'b-', label='Unit Circle (Domain X)')

# 创建值域线
ax.plot([-1, 1], [0, 0], 'r-', linewidth=2, label='Value Range Y')

# 初始角度
init_angle = 45

# 在圆上创建点及其投影
point_on_circle, = ax.plot(np.cos(np.radians(init_angle)), 
                          np.sin(np.radians(init_angle)), 
                          'bo', markersize=10)
projection_point, = ax.plot(np.cos(np.radians(init_angle)), 
                           0, 
                           'ro', markersize=10)
projection_line, = ax.plot([np.cos(np.radians(init_angle)), np.cos(np.radians(init_angle))],
                          [np.sin(np.radians(init_angle)), 0],
                          'k--', alpha=0.5)

ax.legend()

# 添加文本注释
text_x = ax.text(-1.4, 1.3, f'X = {{(x,y) | x² + y² = 1}}')
text_y = ax.text(-1.4, 1.1, f'Y = {{(x,0) | |x| ≤ 1}}')
angle_text = ax.text(-1.4, 0.9, f'Angle: {init_angle}°')
coord_text = ax.text(-1.4, 0.7, f'x = {np.cos(np.radians(init_angle)):.2f}')

# 创建滑块
ax_slider = plt.axes([0.1, 0.05, 0.65, 0.03])
angle_slider = Slider(ax_slider, 'Angle', 0, 360, valinit=init_angle)

# 创建投影线复选框
ax_check = plt.axes([0.8, 0.05, 0.15, 0.03])
check = CheckButtons(ax_check, ['Show Projection'], [True])

def update(val):
    angle = angle_slider.val
    x = np.cos(np.radians(angle))
    y = np.sin(np.radians(angle))
    
    point_on_circle.set_data([x], [y])
    projection_point.set_data([x], [0])
    projection_line.set_data([x, x], [y, 0])
    
    angle_text.set_text(f'Angle: {angle:.1f}°')
    coord_text.set_text(f'x = {x:.2f}')
    
    fig.canvas.draw_idle()

def on_check(label):
    projection_line.set_visible(not projection_line.get_visible())
    fig.canvas.draw_idle()

angle_slider.on_changed(update)
check.on_clicked(on_check)

plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2188159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C(九)while循环 --- 军训匕首操情景

匕首操,oi~oi~oi~~~~~ 接下来的几篇推文,杰哥记录的是三大循环结构的运行流程及其变式。 本篇的主角是while循环。👉 目录: while循环 的组成、运行流程及其变式关键字break 和 continue 在while 循环中的作用while 循环的嵌套题目…

MySQL中NULL值是否会影响索引的使用

MySQL中NULL值是否会影响索引的使用 为何写这一篇文章 🐭🐭在面试的时候被问到NULL值是否会走索引的时候,感到有点不理解,于是事后就有了这篇文章 问题: 为name建立索引,name可以为空select * from user …

SpringBoot线程问题

程序,线程,线程池 进程是资源分配最小单位,线程是程序执行的最小单位。计算机在执行程序时,会为程序创建相应的进程,进行资源分配时,是以进程为单位进行相应的分配,每个进程都有相应的线程&…

TiDB 7.x 源码编译之 TiFlash 篇

本文首发于TiDB社区专栏:https://tidb.net/blog/5f3fe44d 导言 TiFlash 从去年四月一日开源至今已经过去将近一年半,这段时间里 TiFlash 从 v6.0.0-DMR 升级到了 v7.3.0-DMR,并增加了若干新特性,比如支持 MPP 实现窗口函数框架&am…

sql-labs靶场第五关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、寻找注入点 2、注入数据库 ①Order by判断列数 ②寻找注入方式 ③爆库,查看数据库名称 ④爆表,查看security库的所有表 ⑤爆列,查看users表的所有…

Linux之实战命令25:xargs应用实例(五十九)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…

深度优先搜索:解锁无向图连通分量的编号策略

深度优先搜索:解锁无向图连通分量的编号策略 步骤:伪代码:C 代码实现:说明:在无向图中,深度优先搜索(DFS)是一种有效的算法,可以用来找出图的连通分量(Connected Components)。DFS 遍历图的过程中,可以自然地将图划分为若干棵树,这些树构成深度优先森林,其中每棵…

day03 笔试练习

1.简写单词 题目链接&#xff1a;简写单词_牛客题霸_牛客网 public static void main(String[] args) {Scanner sc new Scanner(System.in);while(sc.hasNext()){ // 输入多少读入多少char ch sc.next().charAt(0); // 提取首字母if(ch > a && ch < z){System…

netty之SpringBoot+Netty+Elasticsearch收集日志信息数据存储

前言 将大量的业务以及用户行为数据存储起来用于分析处理&#xff0c;但是由于数据量较大且需要具备可分析功能所以将数据存储到文件系统更为合理。尤其是一些互联网高并发级应用&#xff0c;往往数据库都采用分库分表设计&#xff0c;那么将这些分散的数据通过binlog汇总到一个…

第L9周:无监督学习|K-means聚类算法

本文为365天深度学习训练营 中的学习记录博客原作者&#xff1a;K同学啊 任务描述&#xff1a; ●学会调用sklearn实现KMeans算法。 ●了解误差平方和与轮廓系数。 1.聚类算法是什么&#xff1f; 聚类就是将一个庞杂数据集中具有相似特征的数据自动归类到一起&#xff0c;称为…

Leetcode 1498. 满足条件的子序列数目

1.题目基本信息 1.1.题目描述 给你一个整数数组 nums 和一个整数 target 。 请你统计并返回 nums 中能满足其最小元素与最大元素的 和 小于或等于 target 的 非空 子序列的数目。 由于答案可能很大&#xff0c;请将结果对 109 7 取余后返回。 1.2.题目地址 https://leet…

【优选算法之队列+宽搜/优先级队列】No.14--- 经典队列+宽搜/优先级队列算法

文章目录 前言一、队列宽搜示例&#xff1a;1.1 N 叉树的层序遍历1.2 ⼆叉树的锯⻮形层序遍历1.3 ⼆叉树最⼤宽度1.4 在每个树⾏中找最⼤值 二、优先级队列&#xff08;堆&#xff09;示例&#xff1a;2.1 最后⼀块⽯头的重量2.2 数据流中的第 K ⼤元素2.3 前 K 个⾼频单词2.4 …

气象网格数据与卫星轨道数据如何匹配??

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…

IDEA里面的长截图插件

1.我的悲惨经历 兄弟们啊&#xff0c;我太惨了&#xff0c;我刚刚在准备这个继承和多态的学习&#xff0c;写博客的时候想要截图代码&#xff0c;因为这个代码比较大&#xff0c;一张图截取不下来&#xff0c;所以需要长截图&#xff0c;之前使用的qq截图突然间拉胯&#xff0…

栈和队列相互实现(Java)

本篇任务 前篇我们分别介绍了栈和队列&#xff0c;并对其进行了简单的自我实现&#xff0c;本篇我们将通过栈和队列的相互实现来进一步熟悉和运用栈和队列&#xff0c;如下是我们将要完成的题目&#xff1a; 用队列实现栈https://leetcode-cn.com/problems/implement-stack-u…

【2022工业图像异常检测文献】CFLOW-AD: 通过条件归一化流实现实时无监督定位异常检测

CFLOW-AD: Real-Time Unsupervised Anomaly Detection with Localization via Conditional Normalizing Flows 1、Background 虽然最近提出针对此类数据设置的模型在准确性指标上取得了很高的成绩&#xff0c;但它们的复杂性限制了实时处理的能力。 CFLOW-AD由一个经过判别式…

区块链+Web3学习笔记

学习资料来源于B站&#xff1a; 17小时最全Web3教程&#xff1a;ERC20&#xff0c;NFT&#xff0c;Hardhat&#xff0c;CCIP跨链_哔哩哔哩_bilibili 该课程提供的Github代码地址&#xff0c;相关资料详见README.md&#xff1a; Web3_tutorial_Chinese/README.md at main sm…

Netty系列-8 Netty处理粘包和半包问题

1.半包和粘包问题 TCP协议是基于字节流的数据通讯协议&#xff0c;数据被看做是一连串的字节流&#xff1b;不具备边界信息&#xff0c;给接收方带来半包和粘包问题。 半包&#xff1a;TCP传输时&#xff0c;将数据切割成一个个数据包进行传输。接收方一次读取操作&#xff0c…

吉他弹唱打谱软件哪个好用 吉他弹唱制谱教程

吉他这门乐器一直受到大众的欢迎&#xff0c;究其原因&#xff0c;还是因为其成本低廉、易上手的特性。但是吉他是一个入门容易精通难的乐器&#xff0c;想要成为一个资深的吉他玩家&#xff0c;那么就少不了用到一些吉他弹唱打谱软件。今天我们就来说一说吉他弹唱打谱软件哪个…

学习 CSS 新的属性 conic-gradient 实现环形进度条

我们在工作中用到环形进度条的时候&#xff0c;一般都是使用组件库提供的&#xff0c;那么你有没有想过这是怎么实现的呢&#xff1f; <divclass"progress"style"--progress: 80%; --last: 20%"data-progress"80%"></div><style …