Python:如何使用Basemap加快在英国地图上绘制经度和​​纬度数据的过程

时间:2018-08-30 15:21:23

标签: python matplotlib matplotlib-basemap

我有一个非常大的数据集(超过570K行)作为pandas数据框。它具有经度和纬度列(所有英国位置)。因此,我想在英国地图上绘制它们并使用matplotlib底图。但是,绘制时间太长。有什么办法可以加快这个过程,或者我的代码有什么错误吗?

for index, row in road.iterrows():
    count = row['count']
    x, y = m(row["Longitude"], row["Latitude"])
    size = count ** 2 + 3
    m.plot(x, y, 'o', markersize=size, color='#444444', alpha=0.8)

2 个答案:

答案 0 :(得分:0)

想法对:

  1. 将数据集精简为更小的集合,以捕获时间并衡量改进。
  2. 如果不使用索引,请不要在for循环中使用索引,例如for row in road.iterrows():
  3. 如果您仅在循环中使用一次变量,则不要分配变量。

类似:

for row in road.iterrows():
    m.plot(m(row["Longitude"], row["Latitude"]),
       'o',
       markersize=(row['count'] ** 2 + 3),
       color='#444444', 
       alpha=0.8)

看起来不漂亮,但应该加快一点。

然后跟踪每个更改如何影响性能。

祝你好运!

答案 1 :(得分:0)

这实际上取决于您要形象化显示的数据。

我的第一个想法是绘制数据的密度图(首先自己将数据合并到一个较大的网格中,然后用表示每个网格中有多少东西的颜色绘制该网格)。