1 说明:
======
1.1 环境:python3.8 matplotlib3.2 微软编辑器vscode。
1.2 圆、sin和cos的关系:属于基础性知识,在数学可视化教学和计算机编程中广泛被使用。
1.3 看起来简单,但是提高思维,很重要。
1.4 熟悉matplotlib作图和python编程基础性知识,讲解清楚,小白秒懂,适合普通人、数学爱好者和编程爱好者。
2 效果:
3 代码讲解:
========
3.1 第1步:导入模块
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
3.2 第2步:初始化画布和参数
#整体风格设置:深黑色背景颜色,这种设置比较方便
#注意应该放在最前面
plt.style.use('dark_background')
#画布定义和大小设置:8,4=800和400
fig, ax= plt.subplots(1,1,figsize=(8,4))
plt.axis('equal') # 保证长宽相等
#x和y坐标刻度范围
ax.set_xlim([0, 2*np.pi])
ax.set_ylim([-2.5, 2.5])
#sin和cos的x和y点坐标
x = np.linspace(0, 2*np.pi, 100)
ys = np.sin(x)
yc = np.cos(x)
3.3 第3步:圆和sin、cos的线条与圆点设置
#3-1 直线
#过圆心的水平x线
ax.plot(3*x - 3, 0*ys, linewidth=1, color='pink')
#圆心垂直y线
ax.plot(0*x, 2.5*ys, linewidth=1, color='pink')
#运动三个点的起始垂直y线
ax.plot(0*x 1, 2.5*ys, linewidth=1, color='blue')
#右侧终点垂直y线
ax.plot(0*x 7.3, 2.5*ys, linewidth=1, color='blue')
#3-2 圆
#初始化圆的线条
ax.plot(np.cos(x), np.sin(x), linewidth=1,color='white')
#运动后的圆的再次覆盖的圆线
circleLine, = ax.plot([], [],linewidth=4,color='green',label='circle')
#运动的圆的圆点
circleDot, = ax.plot([], [], 'o', color='yellow')
#3-3 sin
#初始化sin的线条
ax.plot(x 1, np.sin(x), linewidth=1,color='yellow')
#sin运动后再次覆盖的线条
sineLine, = ax.plot([], [], linewidth=4,color='red', label='sin')
#sin的运动的圆点
sineDot, = ax.plot([], [], 'o', color='blue')
#3-4 cos
#初始化cos的线条
ax.plot(x 1, np.cos(x)-1, linewidth=1,color='green')
#cos运动后再次覆盖的线条
cosLine, = ax.plot([], [], linewidth=4,color='pink',label='cos')
#cos的运动的圆点
cosDot, = ax.plot([], [], 'o', color='red')
3.4 第4步:动画anim设置
def moveAnim(i):
# sin anim
sineLine.set_data(x[:i] 1,ys[:i])
sineDot.set_data(x[i] 1, ys[i])
# cos anim
cosLine.set_data(x[:i] 1,yc[:i]-1)
cosDot.set_data(x[i] 1, yc[i]-1)
# circle anim
circleLine.set_data(np.cos(x[:i]), np.sin(x[:i]))
circleDot.set_data(np.cos(x[i]), np.sin(x[i]))
3.5 第5步:动画挂起和plt基本设置
#动画挂起
anim = animation.FuncAnimation(fig, moveAnim, frames=len(x), interval=50)
#标题名
plt.title('circle-sin-cos-moving')
#plt.grid() #显示网格
#保存
#HTML(anim.to_html5_video())
#anim.save('sine-py-effect.mp4', writer='ffmpeg')
plt.legend() #图例默认展示
plt.show() #展示
4 附注:matplotlib版本查询
====================
4.1 代码:
import matplotlib
a=matplotlib.__version__
print(a)
4.2 效果图:
5 画圆的意义:
==========
5.1 钟表的设置。
5.2 傅里叶级数变换。
5.3 数学教学的可视化。
5.4 等等。
满满的干货,请收藏。
,