Matplotlib动画显示为空

时间:2017-08-06 19:24:39

标签: python animation matplotlib

有一个类似的问题here,但我没有遇到同样的问题。以下是我的数据集的快照:

enter image description here

基本上,我想随着时间的推移设置下降坐标的动画。如您所见,日期按dropoff_datetime排序。这是我的代码(非常类似于上面的问题)。

fig = plt.figure(figsize=(10,10))
ax = plt.axes(xlim=xlim, ylim=ylim)
points, = ax.plot([], [],'.',alpha = 0.4, markersize = 0.05)

def init():
    points.set_data([], [])
    return points,

# animation function.  This is called sequentially
def animate(i):
    x = test["dropoff_longitude"]
    y = test["dropoff_latitude"]
    points.set_data(x, y)
    return points,

anim = animation.FuncAnimation(fig, animate, init_func=init,
                               frames=100, interval=20, blit=True)

plt.show()

与上面链接的问题类似,我的情节只是显示为空。我相信我正确编码它,不像上面的链接,我确实看到坐标随着时间的推移而变化。我不确定为什么情节是空的。

1 个答案:

答案 0 :(得分:1)

默认情况下,一个像素是1点或0.72点(取决于您是在jupyter笔记本中运行代码还是作为独立绘图)。如果您创建标记为0.05的绘图,则每个标记的大小分别为0.05像素或0.07像素。由于已经很难在屏幕上看到1个像素,特别是如果将alpha设置为0.4,则观察一个像素的二十分之一是根本不可能的。

解决方案:设置markersize = 5或更高。

一个完整的工作示例:

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import pandas as pd

test = pd.DataFrame({"dropoff_longitude": [-72,-73,-74,-74],
                     "dropoff_latitude": [40,41,42,43]})

xlim=(-71,-75)
ylim=(39,44)
fig = plt.figure(figsize=(10,10))
ax = plt.axes(xlim=xlim, ylim=ylim)
points, = ax.plot([], [],'.',alpha = 1, markersize =5)

def init():
    points.set_data([], [])
    return points,

# animation function.  This is called sequentially
def animate(i):
    x = test["dropoff_longitude"]
    y = test["dropoff_latitude"]
    points.set_data(x, y)
    return points,

anim = animation.FuncAnimation(fig, animate, init_func=init,
                               frames=100, interval=20, blit=True)

plt.show()

enter image description here