【问题标题】:Showing Matplotlib Animation on Kaggle Kernel在 Kaggle 内核上显示 Matplotlib 动画
【发布时间】:2017-12-28 09:27:09
【问题描述】:

在这个 Kaggle Kernel https://www.kaggle.com/asindico/new-york-taxi-exploration 中,我无法使用 Basemap 和 hexbin 显示 matplotlib 动画。

这里是代码sn-p

import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib import cm
from matplotlib import animation, rc
from IPython.display import HTML

%matplotlib inline


#40.758896, -73.985130.
west, south, east, north = -74.1, 40.60, -73.80, 40.9
day=1
df_day=df[((df.pickup_datetime<'2016-01-'+str(day+1))&
           (df.pickup_datetime>='2016-01-'+str(day)))]

fig,axarr = plt.subplots()

m = Basemap(projection='merc', llcrnrlat=south, urcrnrlat=north,
            llcrnrlon=west, urcrnrlon=east, lat_ts=south, resolution='i',ax=axarr)

def init():
    df_time= df_day[((df_day.pu_hour>=0)&(df_day.pu_hour<0))]
    x, y = m(df_time['pickup_longitude'].values, df_time['pickup_latitude'].values)
    m.hexbin(x, y, gridsize=300, bins='log', cmap=cm.YlOrRd_r);
    return (m,)

def animate(i):
    df_time= df_day[((df_day.pu_hour>=i)&(df_day.pu_hour<i+1))]
    x, y = m(df_time['pickup_longitude'].values, df_time['pickup_latitude'].values)
    m.hexbin(x, y, gridsize=300, bins='log', cmap=cm.YlOrRd_r);
    return (m,)

anim = animation.FuncAnimation(fig, animate, init_func=init,frames=5, interval=1,blit=False,repeat=True)

fig.set_size_inches(12,10)
anim.save('pickup_animation.gif', writer='imagemagick', fps=2)

【问题讨论】:

  • 为什么投反对票?
  • 我(还)没有投反对票,但很明显为什么其他人投了反对票:听起来像“这是我的代码,请找出问题”这样的问题不太受欢迎。您可能会坚持使用How to Ask 并提供清晰的问题描述。
  • 现在我投了反对票,因为在花了 10 分钟从 kaggle 网站上获取数据并运行代码之后,结果证明代码运行正常。没有提供适当的问题描述而浪费其他人 15 分钟的时间实际上比投反对票更值得。
  • 您是否设法显示动画地图?如何 ?正如您在已发布的内核中看到的那样,地图没有动画。你不需要下载 Kaggle 内核。你可以分叉它。
  • 动画保存到pickup_animation.gif。你可以使用任何你喜欢的工具来展示它。我的观点是,您需要清楚地说明您的期望、您得到的以及两者的不同之处,以便有人帮助您。

标签: python matplotlib jupyter-notebook kaggle


【解决方案1】:

要在笔记本中显示动画 gif,您可以使用

from IPython.display import Image, display
display(Image(url='pickup_animation.gif'))

您也可以将动画显示为 html5 视频

from IPython.display import HTML
HTML(anim.to_html5_video())

您也可以直接显示 matplotlib 动画,使用笔记本后端而不是内联后端

%matplotlib notebook

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-21
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多