Python绘图轨迹密度

时间:2017-05-13 03:42:32

标签: python dictionary contour

我正在研究轨迹,我想绘制一张密度图"轨迹。

这是一个只有4个轨迹的代码示例,我可以用它来绘制基础地图上的轨迹。

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

map = Basemap(projection="merc",resolution="i",llcrnrlat=25,urcrnrlat=65,llcrnrlon=-100,urcrnrlon=-55) 
map.bluemarble()

dico={}
dico["traj1"]=[[27.5, -86.5], [35.5, -85.0], [40.5, -84.0], [45.5, -82.5], [46.0, -81.5], [47.5, -79.5], [48.5, -78.0], [49.5, -76.0], [51.0, -75.0]]
dico["traj2"]=[[27.5, -88.5], [35.5, -92.5], [40.5, -97.5], [45.5, -93.5], [48.5, -90.0], [53.5, -95.0], [57.0, -100.0], [55.5, -102.0], [53.5, -101.5]]
dico["traj3"]=[[27.5, -88.5], [33.5, -88.0], [34.0, -86.5], [34.0, -84.5], [34.0, -82.0], [34.0, -80.0], [34.0, -78.5], [34.0, -77.5], [32.5, -77.0]]
dico["traj4"]=[[27.5, -86.5], [35.5, -82.5], [40.5, -77.5], [45.5, -78.5], [47.5, -77.5], [47.0, -76.0], [46.0, -73.0], [45.5, -70.5], [45.5, -66.5]]

for i in range(0,4) :
    lons_values=[item[1] for item in dico["traj"+str(i+1)]]
    lats_values=[item[0] for item in dico["traj"+str(i+1)]]

    z,t = map(lons_values, lats_values)
    map.plot(z, t, linewidth=3.5,color=np.random.rand(3,1))

有没有人知道如何使用描述轨迹主要模式的轮廓绘制信封?例如,如果我有100个轨迹,我想要可视化不同的轮廓,其颜色表示"浓度"这条路径中的轨迹。

如果我们认为轨迹的每个点都对应于一个时间步长,如果有关时间步长的信息(如穿过每个时间点步骤t的轮廓线)也可能出现在地图上,那就太棒了(以便保存有关时间和空间的信息。)

1 个答案:

答案 0 :(得分:0)

我使用seaborn模块找到了我的问题的解决方案:

我使用sns.kdeplot(df['x'],df['y'], shade=True)来获取情节。然后我只需将它投射到地图上。

您可以通过以下链接找到我使用的教程:

Seaborn density plot