我正在使用python的matplotlib
和Basemap
库。
我正试图在芝加哥市周围绘制一个GPS点列表,用于我正在进行的项目,但它不起作用。我已经查看了所有可用的示例,但是尽管逐字复制并粘贴它们(然后更改gps点),地图无法使用绘制的点进行渲染。
以下是一些示例点,因为它们存储在我的代码中:
[(41.98302392, -87.71849159),
(41.77351707, -87.59144826),
(41.77508317, -87.58899995),
(41.77511247, -87.58646695),
(41.77514645, -87.58515301),
(41.77538531, -87.58611272),
(41.71339537, -87.56963306),
(41.81685612, -87.59757281),
(41.81697313, -87.59910809),
(41.81695808, -87.60049861),
(41.75894604, -87.55560586)]
这是我用于渲染地图的代码(不起作用)。
# -*- coding: utf-8 -*-
from pymongo import *
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from collections import Counter
import ast
def routes_map():
"""
doesn't work :(
# map of chicago
"""
all_locations = [] #<-- this is the example data above
x = []
y = []
for loc in all_locations: #creates two lists for the x and y (lat,lon) coordinates
x.append(float(loc[0]))
y.append(float(loc[1]))
# llcrnrlat,llcrnrlon,urcrnrlat,urcrnrlon
# are the lat/lon values of the lower left and upper right corners
# of the map.
# resolution = 'i' means use intermediate resolution coastlines.
# lon_0, lat_0 are the central longitude and latitude of the projection.
loc = [41.8709, -87.6331]
# setup Lambert Conformal basemap.
m = Basemap(llcrnrlon=-90.0378,llcrnrlat=40.6046,urcrnrlon=-85.4277,urcrnrlat=45.1394,
projection='merc',resolution='h')
# draw coastlines.
m.drawcoastlines()
m.drawstates()
# draw a boundary around the map, fill the background.
# this background will end up being the ocean color, since
# the continents will be drawn on top.
m.drawmapboundary(fill_color='white')
x1, y1 = m(x[:100],y[:100])
m.plot(x1,y1,marker="o",alpha=1.0)
plt.title("City of Chicago Bus Stops")
plt.show()
这是我运行此代码所得到的:
有没有人对我做错了什么有任何提示?
答案 0 :(得分:1)
您不小心将纬度值输入为x
,经度值为y
。在您提供的示例数据中,第一列是纬度,第二列是经度,而不是您的代码似乎想到的另一种方式。
因此请使用x.append(float(loc[1]))
和y.append(float(loc[0]))
代替您拥有的内容。