matplotlib 如何在图像顶部创建动画图- Python

w1jd8yoj  于 2023-03-13  发布在  Python
关注(0)|答案(2)|浏览(162)

我正在为一位客户做一些工作,我想展示一位员工所走的路线图。我想根据特定的顺序制作动画,这样我就可以演示员工回到手推车上的次数。
我已经读了图像并在图像上画出了锚点。我只是有点不知道如何让画线在锚点之间移动。
CAD image

from matplotlib import image
from matplotlib import pyplot as plt
import numpy as np
# to read the image stored in the working directory
data = image.imread('Asset 1.png') 

# to draw points on co-ordinates
plots = np.array([[500,200], #trolley
                  [420,200], #bath/shower
                  [370,45],  #wardrobe
                  [370,320], #sink
                  [320,250], #toilet
                  [280,45],  #fridge/coffee
                  [175,40],  #desk
                  [180,150], #bed
                  [250,220], #bedside table 1
                  [110,220], #bedside table 2
                  [40,150],  #table
                  [20,100], #window/curtains
                  [65,190], #chair
                  [75,75]]) #carpet 

x,y = plots.T fig, ax = plt.subplots()
plt.imshow(data)
plt.scatter(x,y, marker='o', color="red") 
fig.savefig('DoubleRoom.png')
plt.show()

这就得到了上面的图像。但是我如何在点之间绘图呢?例如,第一步=手推车-〉浴缸/淋浴第二步=淋浴-〉床等。
希望这个请求是有意义的,任何帮助或指导将不胜感激。

ve7v8dk2

ve7v8dk21#

下面是一个可行的方法。我使用你分享的图片作为动画的背景。然后你可以用plt.imshow(data)l,=plt.plot(plots[0,0],plots[0,1],marker='o',ls='--',lw=2,markersize=10)启动你的绘图,并在更新函数中用set_xdataset_ydata更改每一帧的绘图值。注意,轨迹中有一个轻微的偏移,因为我没有“I don“我没有机会看到这个房间的原始照片。

from matplotlib import image
from matplotlib import pyplot as plt
import numpy as np
import matplotlib.animation as animation
# to read the image stored in the working directory
data = image.imread('asset.jpg') 

# to draw points on co-ordinates
plots = np.array([[500,200], #trolley
                  [420,200], #bath/shower
                  [370,45],  #wardrobe
                  [370,320], #sink
                  [320,250], #toilet
                  [280,45],  #fridge/coffee
                  [175,40],  #desk
                  [180,150], #bed
                  [250,220], #bedside table 1
                  [110,220], #bedside table 2
                  [40,150],  #table
                  [20,100], #window/curtains
                  [65,190], #chair
                  [75,75]]) #.Tcarpet 

#Set up of the figure
fig, ax = plt.subplots()
plt.imshow(data) # set background of animation
l,=plt.plot(plots[0,0],plots[0,1],marker='o',ls='--',lw=2,markersize=10) 

#remove box and axes around plot
plt.box(False)
plt.xticks([])
plt.yticks([])

def update(i): #update value of plot
  l.set_xdata(plots[:i+1,0])
  l.set_ydata(plots[:i+1,1])

ani = animation.FuncAnimation(fig, update, frames=plots.shape[0]) #animate
plt.show()

gkl3eglg

gkl3eglg2#

要设置动画,需要使用matplotlib中的动画。动画导入FuncAnimation

ani = FuncAnimation(fig, animate, init_func=init, frames=len(plots), interval=1000)
plt.show()

相关问题