繁体   English   中英

Python Pandas:随着时间的推移绘制GPS轨迹

[英]Python Pandas: Ploting GPS track as it evolves in time

我有一个数据框,其中包含按日期时间索引的纬度,经度列。 时间序列数据表示对象在时间上的轨迹:

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 137824 entries, 2015-03-01 07:16:39 to 2015-04-01 00:12:38
Data columns (total 5 columns):
accuracy     137824 non-null float64
longitude    137824 non-null float64
latitude     137824 non-null float64

如何从这些点绘制轨迹以查看其时间变化? 我首先使用Shapely创建数据框中所有点的有序列表:

import geopandas as gpd
from shapely.geometry import Point

geometry = [Point(xy) for xy in zip(df.longitude, df.latitude)]

# Define EPSG4326 coordinate reference system for GPS latitude and longitude (CRS)
crs = {'init': 'epsg:4326'}
points = gpd.GeoDataFrame(df, crs=crs, geometry=geometry)

然后,我可以绘制所有点:

points.plot(color='green')

这将绘制二维空间中x =纬度和y =经度的所有点。 如何绘制按时间顺序排列的这些点(以3D形式)?

*更新*

毕竟,用Geopandas进行绘图并不是我的最终目标。 我正在寻找任何可以及时绘制GPS坐标的方法。 也许使用常规的Pandas绘图方法或Seaborn绘图库。 这个想法是可视化移动对象的坐标如何随时间变化,也就是说可以显示其位置的历史记录。 有任何想法吗?

我不知道这是否是您所需要的,但是我想我可以使用Matplotlib库。

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.dates as mdates

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('Time')
ax.plot(df2['lon'].values, df2['lat'].values, mdates.date2num(df2['dtime'].tolist()),label=str(1))
ax.zaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S'))
ax.legend()
plt.show()

在此处输入图片说明

说明:

label的作用是识别当前数据属于哪个类别,我以ID为例。

mdates.date2numset_major_formatter结合使用。 如果我们使用以下代码:

ax.plot(df2['lon'].values, df2['lat'].values, df2['dtime'].values,label=str(1))

结果,图形时间轴显示为一个较大的整数: 在此处输入图片说明

如果仅使用set_major_formatter来修改时间显示格式, set_major_formatter得到错误的信息:

OverflowError: Python int too large to convert to C long

mdates.date2num将时间转换为较小的数字,因此我们需要使用mdates.date2numset_major_formatter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM