我怎样才能使蟒蛇图的点随着时间的推移出现?

ast*_*ins 2 python matplotlib

我想创建一个动画,我的数据点将逐渐显示在我的图表上,并在所有数据点出现时冻结.我已经看到完成相关性,我只是不太确定如何使用单独的点本身

这不会显示任何特别有用的东西,但我会觉得很酷,因为我试图在地图上可视化一些位置数据

我知道这不是很清楚,所以请澄清,我不太清楚如何很好地表达我的问题.

谢谢

And*_*lev 9

matplotlib.animation.FuncAnimation是适合您的工具.首先创建一个空图,然后在函数中逐渐添加数据点.以下代码将说明它:

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

x = np.arange(10)
y = np.random.random(10)

fig = plt.figure()
plt.xlim(0, 10)
plt.ylim(0, 1)
graph, = plt.plot([], [], 'o')

def animate(i):
    graph.set_data(x[:i+1], y[:i+1])
    return graph

ani = FuncAnimation(fig, animate, frames=10, interval=200)
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果(保存为gif文件)如下所示: 在此输入图像描述

编辑:要在matplotlib窗口中完成动画外观停止,您需要使其无限(省略frames参数输入FuncAnimation),并将帧计数器设置为帧系列中的最后一个数字:

def animate(i):
    if i > 9:
        i = 9
    graph.set_data(x[:i+1], y[:i+1])
    return graph

ani = FuncAnimation(fig, animate, interval=200)
Run Code Online (Sandbox Code Playgroud)

或者说,这是更好的,你可以设置repeat参数FuncAnimationFalse,按照回答这个问题.

编辑2:要为散点图设置动画,您需要一大堆其他方法.一段代码胜过千言万语:

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

x = np.arange(10)
y = np.random.random(10)
size = np.random.randint(150, size=10)
colors = np.random.choice(["r", "g", "b"], size=10)

fig = plt.figure()
plt.xlim(0, 10)
plt.ylim(0, 1)
graph = plt.scatter([], [])

def animate(i):
    graph.set_offsets(np.vstack((x[:i+1], y[:i+1])).T)
    graph.set_sizes(size[:i+1])
    graph.set_facecolors(colors[:i+1])
    return graph

ani = FuncAnimation(fig, animate, repeat=False, interval=200)
plt.show()
Run Code Online (Sandbox Code Playgroud)