python - 带 basemap 的 Matplotlib 子图动画

标签 python animation matplotlib matplotlib-basemap subplot

我正在尝试生成温度随时间变化的四面板动画。子图中的四个面板中的每一个都应该是动画 map ;每个面板之间的差异是所使用的数据。我已经设法使用一组数据(没有子图)生成动画,代码如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from mpl_toolkits.basemap import Basemap

#dummy temperature data with 10 time-steps
y=np.random.randn(10, 60, 100) 

fig = plt.figure()
m = Basemap(projection='kav7',lon_0=0)
lats=np.linspace(90,-90,y.shape[1])
lons=np.linspace(-180,180,y.shape[2])
lons, lats = np.meshgrid(lons,lats)

m.drawparallels(np.arange(-90.,99.,30.), labels=[1,0,0,0])
m.drawmeridians(np.arange(-180.,180.,60.), labels=[0,0,0,1])
m.drawcoastlines(linewidth=0.25)
m.pcolormesh(lons,lats,y[0],cmap=plt.cm.bwr, shading='flat',latlon=True)

def init():
    m                                                                                                                                                                                                                                                                                                 

def animate(i):
    m.pcolormesh(lons,lats,y[i],cmap=plt.cm.bwr, shading='flat',latlon=True)
    return m

anim = animation.FuncAnimation(fig, animate, init_func=init, frames=10, interval=100) #interval = number of milliseconds between frames                                                                                                                                                                                                                                                                                                                       

anim.save('movie.mp4')

我看过许多子图动画的示例(123),但仍然不知道如何使用 Basemap 来实现它。

最佳答案

您的动画函数需要更新图中四个独立轴上的四个不同 map 。

  • 创建您的四个面板:

    fig, ax = plt.subplots(2, 2)
    

轴被索引。我建议将它们放置在 2x2 布局中,它们被索引为二维数组,因此将轴引用为 ax[0][0]ax[0][1 ]ax[1][0]ax[1][1] 当您创建 map 时。

  • 当您创建 Basemap 的四个实例时,使用 ax 参数 (docs) .

  • 在您的animate 函数中,更改每个轴的颜色。根据数据为 map m_i 分配颜色是使用 m_i.pcolormesh (docs)如您的问题所示。

关于python - 带 basemap 的 Matplotlib 子图动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458488/

相关文章:

用于在整个应用程序中共享配置的 Python 模式

python - 计算 python 字符串中的格式数量

python - 如何监控特定网站 CSS 的变化?

python - 将具有不匹配键的字典列表转储到 csv 文件中

android - Jetpack Compose RC01 中缺少 AnimatedImageVector

python - 实时更新matplotlib Pie

ios - 需要帮助基于来自 URLSession 的数据运行动画 (Swift3)

javascript:如何按顺序显示 gif,避免预加载

Python pylab 绘图传奇科学写作

python - 安装软件包 (conda) 会导致 ImportError : Library not loaded