【发布时间】:2015-02-28 01:14:09
【问题描述】:
正如标题所说。 我正在绘制海冰浓度数据和这段代码:
map = Basemap(projection='cyl', lat_0 = lat_0, lon_0 = lon_0,
llcrnrlon = llcrnrlon, llcrnrlat = llcrnrlat,
urcrnrlat = urcrnrlat, urcrnrlon = urcrnrlon,
area_thresh = 1000., resolution='l')
工作得很好。 http://i.imgur.com/8i36gn0.png
但是当我尝试改变投影时:
map = Basemap(projection='npstere',boundinglat=10,lon_0=270,resolution='l')
我只是得到一张空白地图。 http://i.imgur.com/5TazZdC.png
我是不是忘记了一些关于底图的事情?我虽然改变投影很简单。
编辑:这是完整的代码
import numpy as np
import math as m
import urllib2
import time
import datetime
import matplotlib.pyplot as plt
import matplotlib.patheffects as path_effects
from matplotlib.colors import LinearSegmentedColormap
from mpl_toolkits.basemap import Basemap
from pydap.client import open_url
from pydap.proxy import ArrayProxy
import scipy
from scipy.ndimage.filters import minimum_filter, maximum_filter
data_url_ice = 'http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/noaa.oisst.v2.highres/icec.day.mean.2015.v2.nc'
dataset3 = open_url(data_url_ice)
#############################################################################################
# Get Data
#############################################################################################
# Daily Mean Ice Concentration
Lat_ice = dataset3['lat']
Lon_ice = dataset3['lon']
Time_ice = dataset3['time']
Ice_Conc = dataset3['icec']
Ice_Conc = Ice_Conc[-1,:,:]
Ice_Conc = Ice_Conc.array[:]
Ice_Conc[Ice_Conc < 0] = 0
Ice_Conc = Ice_Conc * 100.
Ice_Conc = Ice_Conc.squeeze()
#############################################################################################
# Colormap
#############################################################################################
vmax_ice = 100.0
cmap_ice = LinearSegmentedColormap.from_list('mycmap', [(0 / vmax_ice, 'white'), #-40
(50. / vmax_ice, 'yellow'), #-20
(100. / vmax_ice, 'blue')] # 20
)
#############################################################################################
# Map Projection Info
#############################################################################################
lat_0 = 0
lon_0 = 0
llcrnrlat = -90. # (1,1)
llcrnrlon = 0. # (1,1)
urcrnrlat = 90. # (720,361)
urcrnrlon = 359. # (720,361)
# Daily Mean Ice Concentration
fig = plt.figure(figsize=(14,14))
ax = fig.add_subplot(1,1,1)
#map = Basemap(projection='ortho', lat_0 = 50, lon_0 = -105,
# area_thresh = 1000., resolution='i')
map = Basemap(projection='npstere',boundinglat=10,lon_0=270,resolution='l')
#map = Basemap(projection='cyl', lat_0 = lat_0, lon_0 = lon_0,
# llcrnrlon = llcrnrlon, llcrnrlat = llcrnrlat,
# urcrnrlat = urcrnrlat, urcrnrlon = urcrnrlon,
# area_thresh = 1000., resolution='l')
map.drawcoastlines()
map.drawcountries()
map.drawmapboundary()
map.fillcontinents(color='white')
levels = np.linspace(0,100,100)
ticks = [0,10,20,30,40,50,60,70,80,90,100]
iceconc = plt.contourf(Lon_ice,Lat_ice,Ice_Conc,levels,cmap=cmap_ice)
# Set Colorbar Text Color
color_bar = map.colorbar(iceconc)
color_bar.set_ticks(ticks)
cbytick_obj = plt.getp(color_bar.ax.axes, 'yticklabels')
plt.setp(cbytick_obj, color='w')
ax.text(0,1.02,'Sea Ice Concentration (%)\n\n',
verticalalignment='bottom', horizontalalignment='left',
transform=ax.transAxes, color='w', fontsize=9).set_clip_on(False)
ax.text(0,1.02,'Satellite Measured Daily Mean\n',
verticalalignment='bottom', horizontalalignment='left',
transform=ax.transAxes, color='w', fontsize=9).set_clip_on(False)
plt.savefig('/home/ice_current.png', facecolor='#3e3e3e', bbox_inches='tight')
plt.close("all")
【问题讨论】:
-
您是否在命令行中执行此操作?或通过脚本?您如何将数据放到地图上?
-
脚本。我刚刚添加了完整的代码。
标签: python matplotlib matplotlib-basemap