Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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中为图像上的绘图设置动画_Python_Pandas_Matplotlib - Fatal编程技术网

在Python中为图像上的绘图设置动画

在Python中为图像上的绘图设置动画,python,pandas,matplotlib,Python,Pandas,Matplotlib,我试图在图像上绘制地理坐标图的动画,在本例中是一个地图片段。我已经设法制作了一个静态的情节,但无法使它成为动画。我曾尝试使用matplotlib动画功能制作动画,但没有成功。我正在使用pandas将csv读入Python,并将matplotlib.pyplot读入绘图。下面是静态绘图的代码 import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('mydata.csv', header=0) # find max/

我试图在图像上绘制地理坐标图的动画,在本例中是一个地图片段。我已经设法制作了一个静态的情节,但无法使它成为动画。我曾尝试使用matplotlib动画功能制作动画,但没有成功。我正在使用pandas将csv读入Python,并将matplotlib.pyplot读入绘图。下面是静态绘图的代码

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('mydata.csv', header=0)
# find max/min, plug into a website, snip area as png and insert as plotmap
BBox = ((df.LONGITUDE.min(),   df.LONGITUDE.max(),
         df.LATITUDE.min(), df.LATITUDE.max()))
#read the image in, plot points over image
plotmap = "myimage.png"
truthplot = plt.imread(plotmap)
fig, ax = plt.subplots(figsize = (8,8),linewidth = 0.1)
ax.scatter(df.LONGITUDE, df.LATITUDE, zorder=1, alpha= 0.5, c='b', s=10)
plottitle = "test"
ax.set_title(plottitle)
ax.set_xlabel("Longitude")
ax.set_ylabel("Latitude")
ax.set_xlim(BBox[0], BBox[1])
ax.set_ylim(BBox[2], BBox[3])

ax.imshow(truthplot, zorder=0, extent = BBox, aspect= 'equal')
plt.show()
一些示例坐标:

LATITUDE   LONGITUDE
30.112342  10.678982
29.443459  11.678997
29.334221  11.889544
28.993448  12.003847

我还是个新手;非常感谢您的帮助。

如果您想直接在数据帧上使用散点图,可以尝试以下方法:

BBox = ((df['LONGITUDE'].min(), df['LONGITUDE'].max(),
         df['LATITUDE'].min(), df['LATITUDE'].max()))
plotmap = 'myimage.png'
truthplot = plt.imread(plotmap)
ax = df.plot.scatter(x='LONGITUDE', y='LATITUDE', c='Red')
plottitle = "test"
ax.set_title(plottitle)
ax.set_xlabel("Longitude")
ax.set_ylabel("Latitude")
ax.set_xlim(BBox[0], BBox[1])
ax.set_ylim(BBox[2], BBox[3])

ax.imshow(truthplot, zorder=0, extent = BBox, aspect= 'equal')
plt.show()
我不知道你想要什么动画,这就是为什么我只是使点闪烁。 但是,您可以在更新函数中轻松地更改散点图。
scat
是一个路径集合,其功能可在此处找到:

更新 如果要一步一步地构建路径,那么操纵PathCollention不是很方便。我建议重新创建obj

scat = ax.scatter(df.LONGITUDE[0], df.LATITUDE[0], zorder=1, alpha= 0.5, c='b', s=10)

max_frames = 10

def update(frame):
    scat = ax.scatter(df.LONGITUDE[:(frame * (len(df.LONGITUDE) + 1))//max_frames],
                      df.LATITUDE[:(frame * (len(df.LATITUDE) + 1))//max_frames],
                       zorder=1, alpha= 0.5, c='b', s=10)
    return scat,

非常接近。基本上,我希望动画从第一行坐标开始,逐行绘制轨迹。我会看看你提供的链接。谢谢你的帮助!
scat = ax.scatter(df.LONGITUDE[0], df.LATITUDE[0], zorder=1, alpha= 0.5, c='b', s=10)

max_frames = 10

def update(frame):
    scat = ax.scatter(df.LONGITUDE[:(frame * (len(df.LONGITUDE) + 1))//max_frames],
                      df.LATITUDE[:(frame * (len(df.LATITUDE) + 1))//max_frames],
                       zorder=1, alpha= 0.5, c='b', s=10)
    return scat,