我想按顺序绘制一系列的x,y坐标,同时清楚地标记指定的坐标。“markevery”似乎允许用户在matplotlib绘图中执行此操作,但是,当我在动画中提供此属性时,我收到错误消息“ValueError:markevery
是iterable,但不是numpy花式索引的有效形式”。有什么想法吗?在
我的实际“mark_on”数组将要长得多,因此我认为在这里使用linecollection是不合理的。在
frames = 100
def update_pos(num,data,line):
line.set_data(data[...,:num])
return line,
def traj_ani(data):
fig_traj = plt.figure()
l,= plt.plot([],[],'b', markevery = mark_on, marker = '*')
plt.xlim(-90,90)
plt.ylim(-90,90)
pos_ani = animation.FuncAnimation(fig_traj, update_pos, frames = np.shape(data)[1], fargs = (data,l),
interval = 20, blit = True)
pos_ani.save('AgentTrajectory.mp4')
data = pd.read_csv('xy_pos.csv', header = None, skiprows = [0])
data = np.asarray(data)
mark_on = [20, 50, 100, 300, 600]
traj_ani(data)
谢谢!在
下面是一个完整的、小型的动画示例:
^{pr2}$在我的完整代码中,我想指定某些帧,其x-y坐标应该用特殊字符或其他颜色标记。在
将索引列表设置为markevery似乎有问题,因为markevery包含绘图数组中不存在的索引。E、 g.如果绘制的数组有3个元素,但markevery的列表集包含索引5,则会发生ValueError。在
解决方案需要在每次迭代中设置markevery列表,并确保它只包含有效的索引。在
相关问题 更多 >
编程相关推荐