Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Matplot.lib在动画图形中使用图像而不是标记_Python_Image_Matplotlib_Animation - Fatal编程技术网

Python 如何使用Matplot.lib在动画图形中使用图像而不是标记

Python 如何使用Matplot.lib在动画图形中使用图像而不是标记,python,image,matplotlib,animation,Python,Image,Matplotlib,Animation,我一直在尝试使用动画中移动的图像,而不是“ro”(红点)或类似的标记,到目前为止,我有一个图,图中有一个小红点在虚线上移动。我希望图像是通过虚线移动的图像,而不是红点 这是我的密码: import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation fig, ax = plt.subplots() xdata, ydata = [], [] img = plt.i

我一直在尝试使用动画中移动的图像,而不是“ro”(红点)或类似的标记,到目前为止,我有一个图,图中有一个小红点在虚线上移动。我希望图像是通过虚线移动的图像,而不是红点

这是我的密码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
xdata, ydata = [], []

img = plt.imread("/Users/salomondabbah/Desktop/mar.jpg")
ax.imshow(img, extent=[0, 2 * np.pi, -1, 1])

xtrack = np.linspace(0, 2 * np.pi, 240)
ytrack = np.sin(xtrack)
ln, = plt.plot([], [], ***'ro'***, zorder=15)

ax.plot(xtrack, np.sin(xtrack), 'k', linewidth=25.0, zorder=5)
ax.plot(xtrack, ytrack, '--y',linewidth=2.0, zorder=10)

def init():
    ax.set_xlim(0, 2*np.pi)
    ax.set_ylim(-1, 1)
    return ln,

def update(frame):
    ln.set_data(frame, np.sin(frame))
    return ln,

ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
                    init_func=init, blit=False)
plt.show()

提前感谢您为我的问题提供的任何解决方案

与您正在执行的操作类似,但使用
set_extent
imshow
而不是
set_data
和一行:

import pandas as pd
import matplotlib.pyplot as plt

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots(figsize=(5,5))
xdata, ydata = [], []

xtrack = np.linspace(0, 2 * np.pi, 240)
ytrack = np.sin(xtrack)
img = plt.imread("car.png")
im = ax.imshow(img, zorder=10, aspect='auto')

ax.plot(xtrack, np.sin(xtrack), 'k', linewidth=25.0, zorder=5)
ax.plot(xtrack, ytrack, '--y',linewidth=2.0, zorder=10)

def init():
    ax.set_xlim(0, 2*np.pi)
    ax.set_ylim(-1, 1)
    return ln,

def update(frame):
    l = frame - 0.5
    r = frame + 0.5
    b = np.sin(frame) - 0.2
    t = np.sin(frame) + 0.2
    im.set_extent([l,r,b,t])
    return ln,

ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
                    init_func=init, blit=False)
ani.save('ani.gif', writer='pillow')


唯一finnicky的事情是获得所需的图形大小和纵横比以及汽车的大小和纵横比。如我所添加的,当创建整个图形时,可以使用
figsize
对其进行编辑。但是如果不将
imshow
aspect
参数设置为
auto
,它将覆盖图形大小和形状,以使图像具有正确的尺寸(看起来)。因此,您可能必须在
update
中使用
0.5
0.2
值,以保持图像的尺寸大致正确。

与您正在执行的操作类似,但使用
set_extent
imshow
代替
set_data
使用一行:

import pandas as pd
import matplotlib.pyplot as plt

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots(figsize=(5,5))
xdata, ydata = [], []

xtrack = np.linspace(0, 2 * np.pi, 240)
ytrack = np.sin(xtrack)
img = plt.imread("car.png")
im = ax.imshow(img, zorder=10, aspect='auto')

ax.plot(xtrack, np.sin(xtrack), 'k', linewidth=25.0, zorder=5)
ax.plot(xtrack, ytrack, '--y',linewidth=2.0, zorder=10)

def init():
    ax.set_xlim(0, 2*np.pi)
    ax.set_ylim(-1, 1)
    return ln,

def update(frame):
    l = frame - 0.5
    r = frame + 0.5
    b = np.sin(frame) - 0.2
    t = np.sin(frame) + 0.2
    im.set_extent([l,r,b,t])
    return ln,

ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
                    init_func=init, blit=False)
ani.save('ani.gif', writer='pillow')

唯一finnicky的事情是获得所需的图形大小和纵横比以及汽车的大小和纵横比。如我所添加的,当创建整个图形时,可以使用
figsize
对其进行编辑。但是如果不将
imshow
aspect
参数设置为
auto
,它将覆盖图形大小和形状,以使图像具有正确的尺寸(看起来)。因此,您可能必须在
update
中使用
0.5
0.2
值,以保持图像的尺寸大致正确