将背景图像添加到matplotlib绘图/gif
问题描述
我有一个任务,它多次调用绘图并根据结果创建一个gif(有关可重现的示例,请参阅下面的示例)。
我的问题是:我想在此gif中添加背景图像。我的猜测是,在追加之前,我必须将其添加到循环中的某个位置。
我到目前为止所发现的,尽管很搞笑,但实际上与我的问题无关:
Plotting a cropped background image on a matplotlib graph
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.animation import PillowWriter
import time
rng = np.random.default_rng()
fig = plt.figure(figsize=[10, 9])
ims = []
for i in range(200):
df = pd.DataFrame(rng.integers(0, 100, size=(100, 2)), columns=list('xy'))
x = df["x"]
y = df["y"]
im = plt.plot(x, y, "b.")
ims.append(im)
print(i)
ani = animation.ArtistAnimation(fig, ims, interval=500, blit=True,
repeat_delay=1000)
writer = PillowWriter(fps=2)
ani.save("demo2.gif", writer=writer)
来源:
How to create a DataFrame of random integers with Pandas?
解决方案
我对此没有太多经验,但我能够显示我之前使用plt.imshow()
调用的图像。由于文件大小限制,无法上载demo.gif
。对不起,样品中使用的图像不好。抱歉。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.animation import PillowWriter
import time
import matplotlib.image as mpimg
rng = np.random.default_rng()
fig = plt.figure(figsize=[10, 9])
img = mpimg.imread('lena_thumbnail_center_square.jpg')
ims = []
for i in range(200):
df = pd.DataFrame(rng.integers(0, 100, size=(100, 2)), columns=list('xy'))
x = df["x"]
y = df["y"]
im = plt.plot(x, y, "b.")
ims.append(im)
# print(i)
ani = animation.ArtistAnimation(fig, ims, interval=500, blit=True,
repeat_delay=1000)
plt.imshow(img)
writer = PillowWriter(fps=2)
ani.save("demo2.gif", writer=writer)
相关文章