gpt4 book ai didi

python - Matplotlib 动画多个大圆圈并从 pandas df 更新

转载 作者:行者123 更新时间:2023-12-05 07:36:42 25 4
gpt4 key购买 nike

我创建了一张 map ,我正在将经纬度坐标的 CSV 文件读入 Pandas DataFrame。在读取 DataFrame 后,我已经成功地使用“for”循环绘制了多个大弧线。

我现在正在尝试为多个大弧线制作动画。动画的原因是在更新 CSV 时实时更新绘图。我最终将为 DataFrame 使用 SQL 表而不是 CSV,但我想先让动画部分工作。

我阅读并观看了多个关于 matplotlib 和动画的教程。我已阅读源文档并尝试应用多个示例。我已经能够成功地为单个伟大的弧线制作动画,但似乎无法将代码扩展到多个弧线。

编辑 1:我希望将文件中的所有大圆弧都绘制在 map 上(我已经让这部分工作了)。当一组新的纬度和经度添加到文件中时,我希望它在同一图中自动​​更新。我正在尝试将其用作实时显示。

**Edit2:我已经尽可能地配对代码。它是最小的基本 map ,数据框中的一些长/纬度坐标以及我对线条进行动画处理的尝试。我必须保留 CSV 输入,因为这是验证 CSV 更新后 map 是否更新的唯一方法。

CSV 包含以下内容:

sourcelon  sourcelat   destlon  destlat
50.44 30.51 -80.84 35.22
52.52 13.4 -80.84 35.22
43.18 -22.97 -80.84 35.22
35.18 -22.97 -80.84 35.22

正在绘制圆弧,但在更新 CSV 时不会更新。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import matplotlib.animation

# create new figure, axes instances.
fig=plt.figure()


# setup mercator map projection.
plt.figure(figsize=(27, 20))
m = Basemap(projection='mill', lon_0=0)
m.drawcoastlines(color='r', linewidth=1.0)


def animate(i):
df = pd.read_csv('c:/python/scripts/test2.csv', sep='\s*,\s*',header=0, encoding='ascii', engine='python'); df


for x,y,z,w in zip(df['sourcelon'], df['sourcelat'], df['destlon'], df['destlat']):
line, = m.drawgreatcircle(x,y,z,w,color='r')
line, = plt.plot([],[])


ani = matplotlib.animation.FuncAnimation(fig, animate, interval=1000)
plt.tight_layout()
plt.show()

最佳答案

我回答了我自己的问题。当我将坐标添加到 CSV 时,我能够更新 map 。但是,我无法删除它们。我也会努力解决这个问题。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import matplotlib.animation


# setup mercator map projection.
fig = plt.figure(figsize=(27, 20))
m = Basemap(projection='mill', lon_0=0)
m.drawcoastlines(color='r', linewidth=1.0)



def animate(i):

df = pd.read_csv('c:/python/scripts/test2.csv', sep='\s*,\s*',header=0, encoding='ascii', engine='python'); df


for x,y,z,w in zip(df['sourcelon'], df['sourcelat'], df['destlon'], df['destlat']):
line, = m.drawgreatcircle(x,y,z,w,color='r')



ani = matplotlib.animation.FuncAnimation(fig, animate, interval=100)
plt.tight_layout()
plt.show()

关于python - Matplotlib 动画多个大圆圈并从 pandas df 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49052907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com