如何制作动画并更新分散标记的大小

问题描述 投票:0回答:1

我有两个数据集,Points 和 Pointsize。我想通过点的坐标(点)和大小(点大小)的变化来对绘图进行动画处理。但我只能更新积分。下面的代码显示三个点随着点数据的变化而移动。我想要的是,这些点不仅会移动,还会改变它们的大小。我尝试使用 scat.set_offsets(Points['xy'],Pointsize) 来实现我的目标。但错误显示“TypeError:set_offsets() 恰好需要 2 个参数(给定 3 个参数)”。我还尝试使用重复的 set_offsets 分别更新 Points['xy'] 和 Pointsize。错误显示“ValueError:新数组的总大小必须保持不变”。

我不知道如何解决这个问题。有人可以告诉我实现目标的方法或解决方案吗?我会感谢你的帮助。非常感谢。

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

def updata(frame_number):
    current_index = frame_number % 3
    a = [[10,20,30],[40,50,60],[70,80,90]]
    Points['xy'][:,0] = np.asarray(a[current_index])
    Points['xy'][:,1] = np.asarray(a[current_index])
    Pointsize = a[current_index]
    scat.set_offsets(Points['xy'])
    #scat.set_offsets(Pointsize)
    #scat.set_offsets(Points['xy'],Pointsize)
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_title("For Dataset %d" % current_index)


fig = plt.figure(figsize=(5,5))
ax = fig.add_subplot(111)
Points = np.zeros(3,dtype=[('xy',float,2)])
Pointsize = [10] * 3
scat = ax.scatter(Points['xy'][:,0],Points['xy'][:,1],s=Pointsize,alpha=0.3,edgecolors='none')
ax.set_xlim(0,100)
ax.set_ylim(0,100)
animation = FuncAnimation(fig,updata,frames=50,interval=600)
plt.show()
python matplotlib scatter-plot matplotlib-animation
1个回答
2
投票

下雨模拟示例所示,使用

.set_sizes

scat.set_sizes(Pointsize)

更新散点的大小

© www.soinside.com 2019 - 2024. All rights reserved.