Python Basemap不显示绘制点

时间:2016-12-01 15:43:47

标签: python pandas matplotlib maps matplotlib-basemap

我刚开始使用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

我做错了什么? 谢谢!!!

2 个答案:

答案 0 :(得分:1)

您需要网格坐标(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

答案 1 :(得分:0)

你的行

if y_map > 0: continue

导致你的问题。 y的每个值都是> 0,因此正在应用continue,这会跳到for循环的下一次迭代。因此,你的行

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

从不使用