forked from CamDavidsonPilon/matplotlib
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplotmap.py
More file actions
49 lines (45 loc) · 1.91 KB
/
plotmap.py
File metadata and controls
49 lines (45 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.basemap import Basemap
def plotmap():
# create figure
fig = plt.figure(figsize=(8, 8))
# set up orthographic map projection with
# perspective of satellite looking down at 50N, 100W.
# use low resolution coastlines.
map = Basemap(projection='ortho', lat_0=50, lon_0=-100, resolution='l')
# lat/lon coordinates of five cities.
lats = [40.02, 32.73, 38.55, 48.25, 17.29]
lons = [-105.16, -117.16, -77.00, -114.21, -88.10]
cities = ['Boulder, CO', 'San Diego, CA',
'Washington, DC', 'Whitefish, MT', 'Belize City, Belize']
# compute the native map projection coordinates for cities.
xc, yc = map(lons, lats)
# make up some data on a regular lat/lon grid.
nlats = 73
nlons = 145
delta = 2.*np.pi/(nlons-1)
lats = (0.5*np.pi-delta*np.indices((nlats,nlons))[0, :, :])
lons = (delta*np.indices((nlats, nlons))[1, :, :])
wave = 0.75*(np.sin(2.*lats)**8*np.cos(4.*lons))
mean = 0.5*np.cos(2.*lats)*((np.sin(2.*lats))**2 + 2.)
# compute native map projection coordinates of lat/lon grid.
# (convert lons and lats to degrees first)
x, y = map(lons*180./np.pi, lats*180./np.pi)
# draw map boundary
map.drawmapboundary(color="0.9")
# draw graticule (latitude and longitude grid lines)
map.drawmeridians(np.arange(0, 360, 30), color="0.9")
map.drawparallels(np.arange(-90, 90, 30), color="0.9")
# plot filled circles at the locations of the cities.
map.plot(xc, yc, 'wo')
# plot the names of five cities.
for name, xpt, ypt in zip(cities, xc, yc):
plt.text(xpt+100000, ypt+100000, name, fontsize=9, color='w')
# contour data over the map.
cs = map.contour(x, y, wave+mean, 15, linewidths=1.5)
# draw blue marble image in background.
# (downsample the image by 50% for speed)
map.bluemarble(scale=0.5)
plotmap()
plt.show()