2016-12-01 1 views
0

Ich habe gerade angefangen Python basemap, aber ich kann nicht Punkt, um in meiner Karte erscheinen ... Hier ist die Funktion, die ich zu bauen bin versucht:Python Basemap zeigt nicht gezeichnete Punkte

def map_plot(df): 

    df = df.apply(pd.to_numeric, errors='coerce').dropna() 
    m = Basemap(projection='mill', 
       llcrnrlat=25, 
       llcrnrlon=-130, 
       urcrnrlat=50, 
       urcrnrlon=-60, 
       resolution='l') #proyeccion de Miller 

    m.drawcoastlines() 
    m.drawcountries(linewidth=2) 
    m.drawstates(color='b') 
    m.fillcontinents(color = '#888888') 
    x_map, y_map = m(df['Latitude'].values, df['Longitud'].values) 
    x = [] 
    y = [] 

    for x_map, y_map in zip(x_map, y_map): 
     if y_map > 0: continue 
     x.append(x_map) 
     y.append(y_map) 
    m.plot(x, y, 'g^', markersize=5) 
    plt.show() 

Also, die Karte zeigt, aber kein einziger Punkt ist geplottet. Hier ist, wie meine Daten sehen vor der Projektion Berechnung Koordinaten:

,Latitude,Longitud 
0,35.93,-77.79 
1,35.93,-77.79 
2,38.78,-80.22 
3,37.65,-82.25 
4,41.12,-104.82 
5,41.85,-80.83 
6,39.7,-84.21 
7,39.9,-80.94 
8,39.1,-84.54 
9,39.93,-83.82 
10,40.05,-82.39 

Was mache ich falsch? Danke !!!

Antwort

0

Ihre Linie

if y_map > 0: continue 

wird Probleme verursachen. Jeder Wert von y ist> 0, so dass die continue angewendet wird, die zur nächsten Iteration der for Schleife übergeht. Folglich Ihre Linien

x.append(x_map) 
    y.append(y_map) 

sind nie verwendet

+0

Danke hugke729, aber das ist leider nicht das Problem, ich überprüft und danach bekam ich die Liste der Koordinaten. Die Daten sind ein Chaos, aber ich habe alles sauber gemacht. Habe auch versucht, in Google Maps zu plotten, und es hat funktioniert !, Was könnte noch mit dieser Grundkarte sein? – jurreaserna

+0

Gerade bemerkt, dass Ihre '' m (df ['Latitude']. Werte, df ['Longitud']. Werte) '' Linie falsch ist. Längengrad sollte das erste Argument sein, nicht Breite – hugke729

+0

Ich erkannte, dass !!!, danke !, immer noch nicht funktioniert – jurreaserna

0

benötigen Sie Gitterkoordinaten (x, y) Punkte auf der Karte zu zeichnen. Hier ist der Code, der die erforderliche Koordinatentransformation implementiert und das Plotten durchführt.

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

m = Basemap(projection='mill', 
       llcrnrlat=20, 
       llcrnrlon=-130, 
       urcrnrlat=50, 
       urcrnrlon=-60, 
       resolution='l') # Miller proj, USA 

m.drawcoastlines() 
m.drawcountries(linewidth=2) 
m.drawstates(color='b') 
m.fillcontinents(color = '#888888') 

# sample data to plot with 
lons = [-100, -75] # degrees 
lats = [25, 40] 

# plotting points 
for lon, lat in zip(lons, lats): 
    x, y = m.projtran(lon, lat)  # coord transformation  
    m.plot(x, y, 'r^', markersize=15) # needs grid coords to plot 

plt.show() 

Output plot

+0

Wenn es funktioniert, bitte in Betracht ziehen, meine Antwort zu akzeptieren. – swatchai