2010-12-15 45 views
4

Je voudrais tracer des lignes courbes/arquées sur une carte Basemap. Je peux tracer une ligne droite en utilisant map.plot (x, y, ..), mais comment est-ce que je le fais incurvé/ai des flèches?Tracer une ligne courbe en Python Basemap

Dans matplotlib, cela peut être fait en utilisant annotate (..), mais Basemap n'a pas cette méthode.

Des idées?

+0

Ok, trouvé une solution, à savoir simplement de tirer sur matplotlib.pyplot au lieu de l'objet de la carte. Cependant, cela ne me permet pas de faire des choses comme "enrouler" autour du globe avec une ligne – Ash

Répondre

3

Ceci est une très vieille question, mais je pensais que ce serait bien de répondre quand même. Quand vous avez dit des lignes courbes, j'ai supposé que vous vouliez dessiner un great circle. Il est un exemple de faire exactement cela dans le basemap documentation, que je l'ai modifié pour le rendre un peu plus facile à modifier vous-même:

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

Notez que la méthode du grand cercle ne peut pas gérer la traversée de la bords de la carte (as mentioned in the documentation), qui, bien que clairement documenté, est une faille assez importante à mon humble avis.

espoir qui aide quelqu'un,