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)
您可以使用 读取背景图像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' ,我无法在此处上传。