- 积分
- 976
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-8-23
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
今天周末参考(http://bbs.06climate.com/forum.php?mod=viewthread&tid=38961)用python画了一下青藏高原及西藏地区降水量的散点图,分享之大家可以参考!cmaps(http://bbs.06climate.com/forum.php?mod=viewthread&tid=43521)
- import cmaps
- import pandas as pd
- import numpy as np
- from netCDF4 import Dataset
- import matplotlib.pyplot as plt
- from mpl_toolkits.basemap import Basemap
- plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文
- plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
- # 打开cvs数据
- data_all = pd.read_csv('rain.dat',header=None, names=['站点','站号','lons','lats','降水量','气温'])
- # 打开高程数据
- deg_data = Dataset('elev.0.25-deg.nc','r')
- data = deg_data.variables['data'][0,:,:]
- # 缺测值maske掉
- data = np.ma.masked_values(data,32767)
- lon = deg_data.variables['lon'][:]
- lat = deg_data.variables['lat'][:]
- # data_units = deg_data['data'].units
- lon, lat = np.meshgrid(lon, lat)
- # 画图
- fig = plt.figure(figsize=(16,16))
- # 设置全局字体等
- plt.rc('font',size=15,weight='bold')
- plt.subplot(121)
- m = Basemap(projection='cyl',llcrnrlat=25,llcrnrlon=70,urcrnrlat=45,urcrnrlon=110)
- # 加载中国地图文件
- m.readshapefile('china_shp/cnhimap','cnhimap.shp',linewidth=1,color ='k')
- # 加载青藏高原边界文件
- m.readshapefile('DBATP/DBATP_Line','DBATP_Line.shp',linewidth = 2,color='r')
- x,y = m(lon,lat)
- levels = np.linspace(3000,np.max(data),50)
- cf = m.contourf(x,y,data,levels=levels,cmap=cmaps.MPL_gist_earth)
- cbar = m.colorbar(cf,location='bottom',size='5%',pad='15%',
- ticks=np.linspace(3000,np.max(data),10),label='m')
- lon_num = np.arange(70,111,5)
- lon_name = ['70°','75°','80°','85°','90°','95°','100°','105°','110°E']
- lat_num = np.arange(25,46,5)
- lat_name = ['25°','30°','35°','40°','45°N']
- plt.yticks(lat_num,lat_name)
- plt.xticks(lon_num,lon_name)
- plt.title('(a)')
- plt.subplot(122)
- m = Basemap(projection='cyl',llcrnrlat=25,llcrnrlon=70,urcrnrlat=45,urcrnrlon=110)
- # 加载中国地图文件
- m.readshapefile('china_shp/cnhimap','cnhimap.shp',linewidth=1,color ='black')
- # 加载青藏高原边界文件
- m.readshapefile('DBATP/DBATP_Line','DBATP_Line.shp',linewidth = 2,color='red')
- x,y = m(data_all['lons'],data_all['lats'])
- st = m.scatter(x,y,c=data_all['降水量'],s=data_all['降水量'],marker='o',cmap=cmaps.MPL_BuGn)
- cbar = m.colorbar(st,location='bottom',size='5%',pad='15%',
- ticks=np.linspace(np.min(data_all['降水量']),np.max(data_all['降水量']),10),
- label='mm',format='%.1f',extend='max')
- lon_num = np.arange(70,111,5)
- lon_name = ['70°','75°','80°','85°','90°','95°','100°','105°','110°E']
- lat_num = np.arange(25,46,5)
- lat_name = ['25°','30°','35°','40°','45°N']
- plt.yticks(lat_num,lat_name)
- plt.xticks(lon_num,lon_name)
- plt.title('(b)')
- plt.savefig('map_data_test.png', bbox_inches='tight',dpi=300)
复制代码
|
|