- 积分
- 378
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-8-29
- 最后登录
- 1970-1-1
|
Python
系统平台: |
python |
问题截图: |
|
问题概况: |
想问下大家,这个colorbar怎么能变得平滑一些呢?我是用的cartopy绘图的,我看网上有利用basemap绘图的,绘制出来的colorbar就很好看,那如果用cartopy应该怎么弄呢? |
我看过提问的智慧: |
看过 |
自己思考时长(天): |
2 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
"""
这是我的代码
#处理ICOADS数据
import scipy.io as sio
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs#引进cartopy这个绘图包
from cartopy.util import add_cyclic_point# add_cyclic_point是建立循环的
import cartopy.feature as cfeature
from cartopy.mpl.ticker import LongitudeFormatter,LatitudeFormatter
#load数据
data=sio.loadmat('F:\python_study\sj\data1013')
print data.keys()
percentage_djf=data['percentage_djf']*100
percentage_jja=data['percentage_jja']*100
x=data['x']
y=data['y']
c_x,c_y=np.meshgrid(x,y)
tansform_djf=percentage_djf.transpose()
#print tansform_djf
#cycle_djf,cycle_lon=add_cyclic_point(percentage_djf,coo
#取出来的x.y不能直接使用,而是应该网格化
#绘图
fig1=plt.figure(figsize=(14,6))
ax=plt.axes(projection=ccrs.PlateCarree(central_longitude=180))
cont=ax.contourf(c_x,c_y,tansform_djf,transform=ccrs.PlateCarree(),cmap='jet')
box=[0,360,-90,90]#设置绘图的经纬度
ax.set_extent(box,crs=ccrs.PlateCarree())
ax.coastlines(linewidth=1.5,resolution='110m')
#设置坐标抽,并且转化成相应东西经纬度
projection = ccrs.PlateCarree()
#ax.set_xticks(np.linspace(-180, 180, 5), crs=projection)
#ax.set_yticks(np.linspace(-90, 90,5), crs=projection)
ax.set_xticks([0, 60, 120, 180, 240, 300, 360], crs=ccrs.PlateCarree())
ax.set_yticks([-90,-60,-30, 0, 30, 60, 90], crs=ccrs.PlateCarree())
'''zero_direction_label=True 有度的标识,False则去掉'''
lon_formatter = LongitudeFormatter(zero_direction_label=True)
lat_formatter = LatitudeFormatter()
ax.xaxis.set_major_formatter(lon_formatter)
ax.yaxis.set_major_formatter(lat_formatter)#设置度
#需要填充陆地颜色时使用
#ax.add_feature(cfeature.LAND, facecolor='0.75') #默认为110m,其它分辨率需用下面命令
scale='110m'
land = cfeature.NaturalEarthFeature('physical', 'land', scale,edgecolor='face',
facecolor=cfeature.COLORS['land'])
ax.add_feature(land, facecolor='0.75')
#改变ax.add_feature和ax.coastlines的先后使用顺序可实现边界线的显示或完全填充覆盖
ax.coastlines(scale)
#设置colorbar
cb=fig1.colorbar(cont)
norm = plt.colors.Normalize(vmin=160, vmax=300)
'''cb.ax.ticks(range(minval-1,maxval,40))
cb.ax_ticklabels(range(minval-1,maxval,40))'''
#cb.ax.tick_params(direction='in')
#plt.savefig('F:\python_study\picture\fog_frenqutly_djf')
|
|