2016-12-01 109 views
0

我只是使用Python底圖開始,但我不能做點出現在我的地圖...這裏是我試圖建立功能:Python的底圖不顯示繪製點

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() 

所以,地圖顯示,但沒有繪製單點。 這裏是我的數據計算投影座標之前的外觀:

,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 

我在做什麼錯? 謝謝!!!

回答

0

你行

if y_map > 0: continue 

導致您的問題。 y的每個值都大於0,因此正在應用continue,這將跳轉到for循環的下一次迭代。因此,你的線條

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

是從來沒有使用過

+0

謝謝hugke729,但可悲的是沒有問題的,我檢查後,我得到的座標列表。數據是一團糟,但我清理了一切。也嘗試在谷歌地圖中繪製,它工作!,這底圖還有什麼? – jurreaserna

+0

只要注意到你的''m(df ['Latitude']。值,df ['Longitud']。values)'行是錯誤的。經度應該是第一個參數,不是緯度 – hugke729

+0

我意識到!!!,謝謝!,依然不起作用 – jurreaserna

0

你需要網格座標(X,Y)在地圖上繪製點。以下是實現所需座標轉換並進行繪圖的代碼。

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

如果有效,請考慮接受我的回答。 – swatchai