如何动画和更新分散的大小?

时间:2017-07-03 09:10:08

标签: python-2.7 matplotlib

我有两个数据集,Points和Pointsize。我想用点的坐标(点)和大小(Pointsize)的变化来动画。但我只能更新积分。下面的代码显示三点随着Points数据的变化而移动。我想要的是,这些点不仅会移动,还会改变它们的大小。我尝试使用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()

1 个答案:

答案 0 :(得分:1)

如官方matplotlib example所示,您可以使用

scat.set_sizes(Pointsize)

更新散点的大小。