【python海洋专题十一】colormap调色
上期内容
本期内容
图像的函数包调用!
Part01.
自带颜色条Colormap
调用方法:
cmap3=plt.get_cmap('ocean')查询方法!
Part02.
seaborn函数包
01:sns.cubehelix_palette
cmap5= sns.cubehelix_palette(10, start=1.5, rot=0, dark=0.05, light=.95, gamma=0.5, reverse=True, as_cmap=True)参数rot控制在调色板的范围内围绕色调轮旋转
参数start控制螺旋线开始的色调
没有发现可循的规律
参数gamma控制颜色的明暗、越小于1越亮、越大于1越暗;
使用的时候慢慢调整到合适的、所需要的颜色吧!
02:sns.dark_palette
cmap6= sns.dark_palette("gray", n_colors=6, reverse=False, as_cmap=True, input='rgb')制作一个混合深色和 color 模式的顺序调色板。
范围从相对低值(不感兴趣)到相对高值(很感兴趣)时。
color:高值的基色;
n_colors:int, 调色板中的颜色数。
input:{‘rgb’, ‘hls’, ‘husl’, xkcd’}
用于解释输入颜色的颜色空间。前三个选项适用于元组输入,后者适用于字符串输入。
03:sns.diverging_palette
cmap = sns.diverging_palette(200, 20, as_cmap=True)h_neg, h_pos 起始/终止颜色值
s 饱和度, 0-100
l 亮度, 0-100
n 颜色个数
center 中心颜色 light(默认), dark
as_cmap 返回一个 matplotlib colormap 而不是一个颜色列表。
04:sns的全部都可应用
使用方法:
cmap=ListedColormap(sns.color_palette("bright"))05:可以直接设置:
cmap="Oranges";cmap="Blues";cmap="Greens";cmap="Reds";cmap="Purples";cmap="Greys";等其他色系:cmap="RdBu";
Part03.
palettable函数包
from palettable.scientific.diverging import Roma_20cmap02=Roma_20.mpl_colormap颜色共有:1587种类。
小编已经将palettable的1587种Colormap精心整理成为“51页高清pdf”文件
提取链接:
链接:https://pan.baidu.com/s/111ME6sHeQJbty4-YZsgysA 提取码:u4m4来源:
调色板界的“扛把子”–palettable - 知乎 (zhihu.com)
全文代码
# -*- coding: utf-8 -*-# %%# Importing related function packagesimport matplotlib.pyplot as pltimport cartopy.crs as ccrsimport cartopy.feature as featureimport numpy as npimport matplotlib.ticker as tickerfrom cartopy import mplfrom cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatterfrom cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTERfrom matplotlib.font_manager import FontPropertiesfrom netCDF4 import Datasetimport palettablefrom palettable.cmocean.diverging import Delta_4from palettable.colorbrewer.sequential import GnBu_9from palettable.colorbrewer.sequential import Blues_9from palettable.scientific.diverging import Roma_20from palettable.cmocean.diverging import Delta_20from palettable.scientific.diverging import Roma_20from matplotlib.colors import ListedColormapfrom pylab import *import seaborn as snsfrom matplotlib import cmdef reverse_colourmap(cmap, name='my_cmap_r'):reverse = []k = []for key in cmap._segmentdata:k.append(key)channel = cmap._segmentdata[key]data = []for t in channel:data.append((1 - t[0], t[2], t[1]))reverse.append(sorted(data))LinearL = dict(zip(k, reverse))my_cmap_r = mpl.colors.LinearSegmentedColormap(name, LinearL)return my_cmap_r# -------------%------------cmap01=Delta_20.mpl_colormapcmap02=Roma_20.mpl_colormapcmap03=ListedColormap(sns.color_palette("bright"))cmap04=ListedColormap(sns.color_palette("Spectral", 10))cmap05=ListedColormap(sns.color_palette("RdYlBu", 1000))#cmap05=ListedColormap(sns.color_palette("Blues_r", 1000)[0:700])cmap = Blues_9.mpl_colormapcmap_r = reverse_colourmap(cmap)cmap1 = GnBu_9.mpl_colormapcmap_r1 = reverse_colourmap(cmap1)cmap2 = Roma_20.mpl_colormapcmap_r2 = reverse_colourmap(cmap2)cmap3=plt.get_cmap('ocean')cmap3_r3=plt.get_cmap('terrain')cmap4=plt.get_cmap('gist_earth')#cmap51 = sns.cubehelix_palette(light=1, as_cmap=True)cmap5= sns.cubehelix_palette(10, start=2, rot=0, dark=0.05, light=.95, gamma=0.5, reverse=True, as_cmap=True)cmap6= sns.dark_palette("gray", n_colors=6, reverse=False, as_cmap=True, input='rgb')cmap7= sns.diverging_palette(100, 50, as_cmap=True)# -------------# read data------------a = Dataset('D:\pycharm_work\data\scs_etopo.nc')print(a)lon = a.variables['lon'][:]lat = a.variables['lat'][:]ele = a.variables['elevation'][:]# -------------# plot ------------scale = '50m'plt.rcParams['font.sans-serif'] = ['Times New Roman'] # 设置整体的字体为Times New Romanfig = plt.figure(dpi=300, figsize=(3, 2), facecolor='w', edgecolor='blue')#设置一个画板,将其返还给figax = fig.add_axes([0.05, 0.08, 0.92, 0.8], projection=ccrs.PlateCarree(central_longitude=180))ax.set_extent([105, 125, 0, 25], crs=ccrs.PlateCarree())# 设置显示范围land = feature.NaturalEarthFeature('physical', 'land', scale, edgecolor='face',facecolor=feature.COLORS['land'])ax.add_feature(land, facecolor='0.6')ax.add_feature(feature.COASTLINE.with_scale('50m'), lw=0.3)#添加海岸线:关键字lw设置线宽;linestyle设置线型cs = ax.contourf(lon, lat, ele[:, :], levels=np.arange(-7000,0,20),extend='both',cmap=cmap05, transform=ccrs.PlateCarree())# ------colorbar设置cb = plt.colorbar(cs, ax=ax, extend='both', orientation='vertical',ticks=np.linspace(-7000, 0, 7))cb.set_label('depth', fontsize=4, color='k')#设置colorbar的标签字体及其大小cb.ax.tick_params(labelsize=4, direction='in') #设置colorbar刻度字体大小。#cf = ax.contour(lon, lat, ele[:, :], levels=[-5000,-2000,-500,-300,-100,-50],colors='gray', linestyles='-',# linewidths=0.2,transform=ccrs.PlateCarree())# 添加标题ax.set_title('Etopo', fontsize=4)# 利用Formatter格式化刻度标签ax.set_xticks(np.arange(107, 125, 4), crs=ccrs.PlateCarree())#添加经纬度ax.set_xticklabels(np.arange(107, 125, 4), fontsize=4)ax.set_yticks(np.arange(0, 25, 2), crs=ccrs.PlateCarree())ax.set_yticklabels(np.arange(0, 25, 2), fontsize=4)ax.xaxis.set_major_formatter(LongitudeFormatter())ax.yaxis.set_major_formatter(LatitudeFormatter())ax.tick_params(color='k', direction='in')#更改刻度指向为朝内,颜色设置为蓝色gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=False, xlocs=np.arange(107, 125, 4), ylocs=np.arange(0, 25, 2),linewidth=0.25, linestyle='--', color='k', alpha=0.8)#添加网格线gl.top_labels, gl.bottom_labels, gl.right_labels, gl.left_labels = False, False, False, Falseplt.savefig('scs_elevation06.jpg', dpi=600, bbox_inches='tight', pad_inches=0.1) # 输出地图,并设置边框空白紧密plt.show()参考文献
图片 1:Python可视化|matplotlib07-自带颜色条Colormap(三) - 知乎 (zhihu.com)
2:164种默认colormap样式【附图】_colormap种类-CSDN博客
3:Python 画图常用颜色 - 单色、渐变色、混色 - 够用_puthon 颜色渐变-CSDN博客
4:通过函数seaborn.cubehelix_palette生成顺序调色板_sns.cubehelix_palette-CSDN博客
5:seaborn调色板 color, hls, cubehelix, dark, diverging_palette_sns.diverging_palette-CSDN博客
6:python画图配色总结_python配色_我的心永远是冰冰哒的博客-CSDN博客
7:调色板界的“扛把子”–palettable - 知乎 (zhihu.com)