- 积分
- 1528
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-5-6
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 凉茶啦啦啦啦啦 于 2019-12-21 15:37 编辑
colormap又叫colorbar是一个包含三列矩阵的色彩映射表,简单来说就是一个shape为(N,3)的矩阵。
- 矩阵中的值的值取值范围为[0,1]
- 每一行代表一个颜色,即RGB值
1.matplotlib colorbar
(a)matplotlib自带的colorbar
python的matplotlib模块中内嵌了大批常用的colormapshttps://matplotlib.org/examples/color/colormaps_reference.html
- import matplotlib.pyplot as plt
- from mpl_toolkits.basemap import Basemap as mp
- import numpy as np
- import netCDF4 as nc
- #%%
- obj=nc.Dataset('E:/tidal mixing/gebco/GEBCO_2014_2D_90.0_5.0_100.0_17.0.nc')
- lon=obj.variables['lon'][0:-1:2]
- lat=obj.variables['lat'][0:-1:2]
- elevation=obj.variables['elevation'][0:-1:2,0:-1:2]
- elevation=np.ma.masked_greater_equal(elevation,0)
- plt.figure(1,figsize=(8,6))
- m=mp(llcrnrlon=90.0,llcrnrlat=5.0,urcrnrlon=100.0,urcrnrlat=17.0,\
- resolution='i',projection='mill')
- m.drawcoastlines()
- lonlabel=['90','92','94','96','98','100']
- lon_num=[90,92,94,96,98,100]
- latlabel=['6','8','10','12','14','16']
- lat_num=[6,8,10,12,14,16]
- lon_num,temp=m(lon_num,np.arange(len(lon_num)))
- temp,lat_num=m(np.arange(len(lat_num)),lat_num)
- plt.xticks(lon_num,lonlabel,fontsize=20)
- plt.yticks(lat_num,latlabel,fontsize=20)
- plt.xlabel('Longitude(E)',fontsize=20)
- plt.ylabel('Latitude(N)',fontsize=20)
- xx,yy=np.meshgrid(lon,lat)
- xx,yy=m(xx,yy)
- cmap_color=plt.cm.get_cmap('RdYlBu_r') #_r的意思是反转colorbar
- m.pcolormesh(xx,yy,elevation,cmap=cmap_color)
- cbar=m.colorbar()
- cbar.ax.tick_params(labelsize=20)
复制代码输出图像: 2.使用ncl的colorbar 是之前在气象家园上看到的一个大神自己写的包cmaps,这个包中基本包含了ncl的所有colorbar。气象家园地址
ncl colormap:http://www.ncl.ucar.edu/Document/Graphics/color_table_gallery.shtml
使用方法很简单,首先导入cmaps包,然后改变cmap就行- import cmaps
- ....
- cmap_color=cmaps.ncl_default #如需反转colorbar,其方法是cmap_color=cmap_color.reversed()
复制代码- from matplotlib import colors
- def dcmap():
- file_path='E:/python/colorbar/test.txt'
- fid=open(file_path)
- data=fid.readlines()
- n=len(data);
- rgb=np.zeros((n,3))
- for i in np.arange(n):
- rgb[i][0]=data[i].split(',')[0]
- rgb[i][1]=data[i].split(',')[1]
- rgb[i][2]=data[i].split(',')[2]
- rgb=rgb/255.0
- icmap=colors.ListedColormap(rgb,name='my_color')
- return icmap
复制代码- cmap_color=dcmap()
- m.pcolormesh(xx,yy,elevation,cmap=cmap_color.reversed())
复制代码
输出图像
以上三点是我常用的三种选择python colorbar的方法,还有一种方法是可以用matplotlib自己定义新的colorbar以及在原有colorbar的基础上修改形成一个新的colorbar的方法,在这里就先不写了,以后有时间再总结吧。希望可以给学习python的朋友有一些帮助,如有不足之处还请多多指教!
|
评分
-
查看全部评分
|