文章目录
*
– 1、代码
– 2、结果
– 3、加入带文本标签的代码
– 4、结果
– 5、解决两个函数中动点如何运动的问题
– 6、结果
1、代码
使用Python中的 matplotlib.animation库进行动点的绘制。
可以从官网进行学习,里面有很多有意思的动图绘制。matplotlib官网~
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
x = np.arange(0, 2*np.pi, 0.1)
line, = ax.plot(x, np.sin(x))
def animate(i):
if len(ax.lines) == 2:
ax.lines.pop(1)
ax.plot(x[i], np.sin(x)[i], 'o', color='red')
return line, ax
ani = animation.FuncAnimation(
fig, animate, frames=x.size, interval=100, blit=False, save_count=50)
plt.show()
2、结果
本次编写的目的是为了测试一下群体智能算法的优化策略。会不定期会更新,优化或添加解析。
———————————————————————————更新———————————————————————————
; 3、加入带文本标签的代码
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
x = np.arange(0, 2*np.pi, 0.1)
line, = ax.plot(x, np.sin(x))
def animate(i):
if len(ax.lines) == 2:
ax.lines.pop(1)
if len(ax.texts) > 0:
ax.texts.pop(0)
ax.plot(x[i], np.sin(x)[i], 'o', color='red')
ax.text(x[i], np.sin(x)[i], ' ('+str(round(x[i], 2))+','+str(round(np.sin(x)[i], 2))+'+)', fontsize=10)
return line, ax
ani = animation.FuncAnimation(
fig, animate, frames=x.size, interval=500, blit=False, save_count=50)
plt.show()
4、结果
———————————————————————————更新———————————————————————————
; 5、解决两个函数中动点如何运动的问题
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
x = np.arange(0, 2.25*np.pi, 0.1)
line, = ax.plot(x, np.sin(x), color='blue')
ax2 = ax.twinx()
x2 = np.array(list(reversed(x)))
line2, = ax2.plot(x2, np.sin(x2+2**np.pi), color='green')
sin = True
def animate(i):
global sin, x
if sin:
if len(ax.lines) == 2:
ax.lines.pop(1)
if len(ax.texts) > 0:
ax.texts.pop(0)
ax.plot(x[i], np.sin(x)[i], 'o', color='red')
ax.text(x[i], np.sin(x)[i], ' (' + str(round(x[i], 2)) + ',' + str(round(np.sin(x)[i], 2)) + '+)', fontsize=10)
print(x[i])
if x[i] >= 7.0:
sin = False
ax.lines.pop()
ax.texts.pop()
else:
if len(ax2.lines) == 2:
ax2.lines.pop(1)
if len(ax2.texts) > 0:
ax2.texts.pop(0)
ax2.plot(x2[i], np.sin(x2+2**np.pi)[i], 'o', color='red')
ax2.text(x2[i], np.sin(x2+2**np.pi)[i], ' (' + str(round(x2[i], 2)) + ',' + str(round(np.sin(x2+2**np.pi)[i], 2)) + '+)', fontsize=10)
if x2[i] 0:
sin = True
ax2.lines.pop()
ax2.texts.pop()
return line, ax, line2, ax2
ani = animation.FuncAnimation(
fig, animate, frames=x.size, interval=100, blit=False, save_count=50)
plt.show()
6、结果
申明:本篇博文可能是全网 第一个讲解这类需求的画图实例,以上代码 不得转载,或 盗用作付费资源。by_Neuer_桓
原创不易,有帮助请 点个赞吧,感谢你的支持!有错误也请指出,谢谢。
ps:近期学业/工作繁忙,全网博客暂不更新了,还请见谅。2022年3月12日留。
Original: https://blog.csdn.net/qq_44853197/article/details/121578583
Author: TerryBlog
Title: 用Python绘制一个运动在二维函数上的动点(使用matplotlib.animation)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/764744/
转载文章受原作者版权保护。转载请注明原作者出处!