matplotlib 底图,通过 matplotlib 中的经纬度坐标绘制图形
matplotlib basemap, issues graphing by coordinates in matplotlib with latitude and longitude
我有以下坐标列表,其中大部分都在U.S中。我使用 google 应用程序的融合表检查了它们,以查看它们将显示在那里的位置。这样做之后,很明显 matplotlib 显示的值只是...垃圾。
根据 google 融合表,我的输出应该看起来更像...真的,关键要点是大多数坐标都在 U.S 中。
latitudes = [37.09024, -37.605, 43.04819620000001, 29.7604267, 47.6062095, 34.0232431, 31.968598800000002, None, None, None, 44.1455225, 42.09868669999999, 42.360082500000004, 36.737798100000006, 38.57670170000001, 34.0522342, 31.230390399999997, None, 52.922530099999996, 56.130366, 38.9071923, 34.187575200000005, 41.499320000000004, 47.9789848, 39.2903848, 19.724110600000003, 38.9071923, 39.32098010000001, 44.2311717, 41.8498339, 40.7127753, 49.4928119, 55.8417014, None, 38.9071923, None, 30.267153000000004, 46.7297771, 36.9741171, 40.0583238, 37.387474, 37.548269700000006, 40.902988, 33.7489954, -25.274398, 27.950575, 43.653226000000004, 37.485215200000006, 38.9071923]
longitudes = [-95.712891, 145.14600000000002, -76.0488458, -95.36980279999999, -122.33207079999998, -84.36155550000001, -99.9018131, None, None, None, -88.49151540000001, -75.91797380000001, -71.0588801, -119.78712469999999, -92.17351640000001, -118.24368490000002, 121.4737021, None, -1.4746186000000001, -106.34677099999999, -77.03687070000001, -118.5900635, -81.6943605, -122.2020795, -76.6121893, -155.08681930000003, -77.03687070000001, -111.0937311, -76.48595440000001, -87.8806738, -74.0059728, -117.29483429999999, -3.2155866, None, -77.03687070000001, None, -97.7430608, -117.18173770000001, -122.0307963, -74.40566120000001, -122.05754340000001, -121.98857190000001, -74.9577372, -84.3879824, 133.775136, -82.4571776, -79.3831843, -122.2363548, -77.03687070000001]
x,y= list(zip(*sorted(zip(latitudes, longitudes), key=lambda it: it[0])))
plt.figure(figsize=(12, 6))
map = Basemap(projection='mill', lon_0=180)
something = map.scatter(x, y, latlon=True, marker='.', color='g', s=24, zorder=10)
map.drawparallels(np.arange(-90,90,30),labels=[1,0,0,0])
map.drawmeridians(np.arange(map.lonmin,map.lonmax+30,60),labels=[0,0,0,1])
map.fillcontinents(color='coral',lake_color='aqua')
map.drawcountries()
plt.title('Small Amount of Data Plot')
plt.show()
此代码绘制了南极大陆的大部分值。不打算提供屏幕截图,因为我认为除了这段代码不起作用之外,它并没有真正传达任何有用的信息。
latitude
和 longitutde
坐标来自 google 地图 api (https://developers.google.com/maps/documentation/geocoding/intro)。我应该如何修改这些坐标以便我可以在 matplotlib 中绘制它们?我认为 latlon 参数可以帮助我解决这个问题,但是...
这看起来像是我在处理绘图坐标时有时遇到的一个常见问题:您的数据源和绘图方法期望您的坐标数据具有不同的顺序。
我猜的解释是,虽然"latitude and longitude"是最传统的引用坐标对的排序,但是当绘图进入场景时,经度相当于X轴和纬度到 Y 轴,所以一些 API(一个著名的例子是 KML 坐标)使用 "Longitude/Latitude" 排序。
当然最后哪个都有效,只是约定俗成的问题,但有时我们不得不从一种约定转换到另一种约定。
我有以下坐标列表,其中大部分都在U.S中。我使用 google 应用程序的融合表检查了它们,以查看它们将显示在那里的位置。这样做之后,很明显 matplotlib 显示的值只是...垃圾。
根据 google 融合表,我的输出应该看起来更像...真的,关键要点是大多数坐标都在 U.S 中。
latitudes = [37.09024, -37.605, 43.04819620000001, 29.7604267, 47.6062095, 34.0232431, 31.968598800000002, None, None, None, 44.1455225, 42.09868669999999, 42.360082500000004, 36.737798100000006, 38.57670170000001, 34.0522342, 31.230390399999997, None, 52.922530099999996, 56.130366, 38.9071923, 34.187575200000005, 41.499320000000004, 47.9789848, 39.2903848, 19.724110600000003, 38.9071923, 39.32098010000001, 44.2311717, 41.8498339, 40.7127753, 49.4928119, 55.8417014, None, 38.9071923, None, 30.267153000000004, 46.7297771, 36.9741171, 40.0583238, 37.387474, 37.548269700000006, 40.902988, 33.7489954, -25.274398, 27.950575, 43.653226000000004, 37.485215200000006, 38.9071923]
longitudes = [-95.712891, 145.14600000000002, -76.0488458, -95.36980279999999, -122.33207079999998, -84.36155550000001, -99.9018131, None, None, None, -88.49151540000001, -75.91797380000001, -71.0588801, -119.78712469999999, -92.17351640000001, -118.24368490000002, 121.4737021, None, -1.4746186000000001, -106.34677099999999, -77.03687070000001, -118.5900635, -81.6943605, -122.2020795, -76.6121893, -155.08681930000003, -77.03687070000001, -111.0937311, -76.48595440000001, -87.8806738, -74.0059728, -117.29483429999999, -3.2155866, None, -77.03687070000001, None, -97.7430608, -117.18173770000001, -122.0307963, -74.40566120000001, -122.05754340000001, -121.98857190000001, -74.9577372, -84.3879824, 133.775136, -82.4571776, -79.3831843, -122.2363548, -77.03687070000001]
x,y= list(zip(*sorted(zip(latitudes, longitudes), key=lambda it: it[0])))
plt.figure(figsize=(12, 6))
map = Basemap(projection='mill', lon_0=180)
something = map.scatter(x, y, latlon=True, marker='.', color='g', s=24, zorder=10)
map.drawparallels(np.arange(-90,90,30),labels=[1,0,0,0])
map.drawmeridians(np.arange(map.lonmin,map.lonmax+30,60),labels=[0,0,0,1])
map.fillcontinents(color='coral',lake_color='aqua')
map.drawcountries()
plt.title('Small Amount of Data Plot')
plt.show()
此代码绘制了南极大陆的大部分值。不打算提供屏幕截图,因为我认为除了这段代码不起作用之外,它并没有真正传达任何有用的信息。
latitude
和 longitutde
坐标来自 google 地图 api (https://developers.google.com/maps/documentation/geocoding/intro)。我应该如何修改这些坐标以便我可以在 matplotlib 中绘制它们?我认为 latlon 参数可以帮助我解决这个问题,但是...
这看起来像是我在处理绘图坐标时有时遇到的一个常见问题:您的数据源和绘图方法期望您的坐标数据具有不同的顺序。
我猜的解释是,虽然"latitude and longitude"是最传统的引用坐标对的排序,但是当绘图进入场景时,经度相当于X轴和纬度到 Y 轴,所以一些 API(一个著名的例子是 KML 坐标)使用 "Longitude/Latitude" 排序。
当然最后哪个都有效,只是约定俗成的问题,但有时我们不得不从一种约定转换到另一种约定。