在Python/Basemap中绘制多条线

4

我刚开始学习Python/Matplotlib/Basemap,非常需要帮助。如何绘制多条线?

假设我的数据是这样的:

[(lat1,lon1) (lat2,lon2) (lat3,lon3)]
[(lat1,lon1) (lat2,lon2) (lat3,lon3)]
[(lat1,lon1) (lat2,lon2) (lat3,lon3)]
...

我想为我的数据中的每一行绘制一条单独的线。但是,使用我的代码得到的结果是连接前一行的最后一个点和当前行的第一个点。有人可以帮我修复一下吗? 谢谢!
编辑: 这是我的代码:
for page in files:
    file = open(dir + '/' + page)
    for line in file:
       lines = line.split()
       time = lines[0]
       lon = lines[1]
       lat = lines[2]
       lon_float = float(lon)
       lat_float = float(lat)
       lats.append(lat_float)
       lons.append(lon_float)
    x,y = m(lons, lats)
    m.plot(x,y,'D-')
plt.show()

我想为每个文件绘制一条线(每个文件有多个纬度/经度对)。同时,m是我的Baseplot实例。


啊,看看我的修改后的答案。我们之前走错了方向 ;) - tacaswell
1个回答

2
您没有清除 latslons,因此每次循环文件时都会积累这些点。
for page in files:
    file = open(dir + '/' + page)
    lats = []
    lons = []
    for line in file:
        ...

编辑:完全重写答案


为了更清晰,zip语句可以拆分成两行:lats, lons = zip(*data),然后是plt.plot(lons, lats)。我认为@tcaswells的示例需要交换lons和lats的顺序才能正常工作(但我总是记不太清楚)。 - pelson
是的!那正是我想要的!非常感谢你!!那太有意义了! - peter_wx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接