使用 matplotlib 动画在后台显示地图

nar*_*man 2 matplotlib python-3.x

我想在车辆移动时在后台显示地图。我正在使用 matplotlib 动画函数。动作看起来不错。但我在加载地图时尝试了以下操作。地图未加载。仅可见黑色斑块。我也尝试指定 zorder。但没有任何效果。

ani = animation.FuncAnimation(fig, animate, len(x11),interval=150,
                          blit=True, init_func=init, repeat=False)

img = cbook.get_sample_data('..\\maps.png')
image = plt.imread(img)
plt.imshow(image)
plt.show()
Run Code Online (Sandbox Code Playgroud)

Ani*_*l_M 5

您可以使用 读取背景图像scipy.misc import imread并用于plt.imshow在动画背景中渲染。

下面的示例生成一个圆圈(我们假设它是您的汽车),将“usa_map.jpg”放在背景中,然后在地图上移动圆圈。

另外,您可以使用编码器保存动画,例如使用格式保存ffmpeg电影mp4anim.save('the_movie.mp4', writer = 'ffmpeg', fps=30)

源代码

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from scipy.misc import imread


img = imread("usa_map.jpg")

fig = plt.figure()
fig.set_dpi(100)
fig.set_size_inches(7, 6.5)

ax = plt.axes(xlim=(0, 20), ylim=(0, 20))
patch = plt.Circle((5, -5), 0.75, fc='y')


def init():
    patch.center = (20, 20)
    ax.add_patch(patch)
    return patch,

def animate(i):
    x = 10 + 3 * np.sin(np.radians(i))
    y = 10 + 3 * np.cos(np.radians(i))
    patch.center = (x, y)
    return patch,

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

plt.imshow(img,zorder=0,  extent=[0.1, 20.0, 0.1, 20.0])
anim.save('the_movie.mp4', writer = 'ffmpeg', fps=30)
plt.show()
Run Code Online (Sandbox Code Playgroud)

上面的代码将生成一个围绕美国地图移动的圆圈的动画。它还将另存为 'the_movie.mp4' ,我无法在此处上传。

结果图像
在此输入图像描述