matplotlib绘动态图

模拟多智能体编队算法的matplotlib绘图基础框架

 

'''高度一致绘图'''

‘’‘在笛卡尔坐标系下,只考虑高度问题,高度一致即是直线上分布的点缩聚成一点,其次总路径最短的位置在代码中体现’‘’

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import animation

NUM=10   #无人机个体数量
point_list = []      #坐标列表[[1,2],[2,4]]之类的
a=np.random.uniform(0,100,size=NUM) #随机生成x坐标
# b=np.random.uniform(0,100,size=NUM) #随机生成y坐标
b=[50]*NUM  #固定y坐标
for i in range(NUM):
    point_list.append([a[i],b[i]])



"""设置画布和坐标轴"""
fig,ax=plt.subplots()
ax.set_ylim(0,100)
ax.set_xlim(0,100)

class Point():
    def __init__(self,myposition,ax):
        self.myposition=myposition
        self.dot=ax.plot([myposition[0]],[myposition[1]],'bo')[0]

    def gen_dot(self,aim):
        distance=aim-self.myposition[0]
        x = np.linspace(self.myposition, aim, abs(int(distance))) #每帧移动相同距离实现速度一致
        y = 50
        for each in x:
            yield [each, y]

    def update_dot(self,newdot):
        self.dot.set_data(newdot[0], newdot[1])
        return self.dot

    def move(self,aim):
        return animation.FuncAnimation(fig, self.update_dot, frames=self.gen_dot(aim), interval=100)


"""  通过字典实例化多个对象  """
obj_dict = {}
for i in range(NUM):
    obj_dict['R'+str(i)] = Point(myposition=point_list[i],ax=ax)

'''计算最小路径目标点'''
a.sort()
if NUM%2 == 1:
    aim=a[int(NUM/2)]
else:
    aim = a[int(NUM/2)]
ax.plot([aim],[50],'ko',alpha=1)

draw_list=[]
for i in range(NUM):
    R = obj_dict['R'+str(i)]
    draw_list.append(R.move(aim=aim))

plt.show()


''' 由于毕设文章尚未完成,需要等待论文发表之后再公布第二阶段形成均匀多边形编队的代码 '''
''' 也在研究这个方向的朋友们可以一起交流一下  '''
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ColaForced

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值