在Python Basemap中绘制曲线

4 投票
1 回答
3514 浏览
提问于 2025-04-16 08:34

我想在Basemap地图上画一些弯曲的线条。 我可以用map.plot(x,y,..)画一条直线,但我该怎么把它变成弯曲的或者加上箭头呢?

在matplotlib中,可以用annotate(..)来实现这个效果,但Basemap没有这个方法。

有没有什么好主意呢?

1 个回答

4

这个问题虽然很老了,但我觉得回答一下还是不错的。当你提到曲线的时候,我猜你是想画一个大圆。在basemap的文档中有一个关于如何做到这一点的例子,我对它做了一些修改,让你更容易自己调整:

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

m = Basemap(projection='cyl')

p0_ll =  -73.98, 40.78
p1_ll = 0.08, 51.53

m.drawgreatcircle(p0_ll[0], p0_ll[1], p1_ll[0], p1_ll[1], 
                  linewidth=2, color='b')
m.drawcoastlines()
m.fillcontinents()

plt.show()

enter image description here

需要注意的是,大圆的方法无法处理地图边缘的交叉问题(文档中有提到),虽然这个问题有明确说明,但在我看来这是一个相当大的缺陷。

希望这对某些人有帮助,

撰写回答