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()

3. 使用气象家园调色盘

这种方法是结合气象家园的调色盘,将平时看文献看到的colorbar为自己所用。

气象家园调色盘下载地址:

用链接里的方法克隆完色标之后生成一个txt文件,其文件中包含rgb值,即你将要使用的colormap

之后的工作是在python中导入这个colormap,由于生成的值在[0,255]之间,而python中要用的colormap RGB值范围是[0,1],所以要进行简单转换。

以下将colorbar转换写成一个函数,直接调用即可。

这个函数需要用到matplotlib的colors,因此要提前导入

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 plot map_python的colormap总结(matplotlib+ncl+气象家园调色盘)相关推荐

  1. python plot 图像大小_设置matplotlib图像的figsize和dpi

    我们可以通过两个参数来控制matplotlib图像的大小,在创建figure对象的时候,有figsize和dpi. figsize是一个tuple,用来指定width和height的inch: dpi ...

  2. python画图怎么调色_Python气象数据处理与绘图(19):如何使用NCL色板(调色盘思路相同)...

    一. 使用NCL色板(使用调色盘文件思路相同) NCL的色板十分丰富,几乎可以涵盖平常所需.详见:传送门 那么我们能否将NCL的色板用在python中呢?答案当然是可以的. 我在气象家园发现了个帖子, ...

  3. python中等高线填充颜色_Python matplotlib使用colormap更改contourf plot中指定值的颜色...

    我正在尝试使用colormap在matplotlib中创建一个填充的等高线图. 我想改变指定值的颜色. 例如, levs = [-3,-1,1,3] plt.contourf(x,y,z,levs,c ...

  4. python数据挖掘学习】十五.Matplotlib调用imshow()函数绘制热图

    python数据挖掘学习]十五.Matplotlib调用imshow()函数绘制热图 #2018-03-28 14:47:19 March Wednesday the 13 week, the 087 ...

  5. 修改python plot折线图的坐标轴刻度

    修改python plot折线图的坐标轴刻度,这里修改为整数: 代码如下: from matplotlib import pyplot as plt import matplotlib.ticker ...

  6. 用python画动图_Python使用matplotlib画动态图

    机器学习需要使用python实现相应的算法,因此学习了Matplotlib中的画图. 当然为了能显示机器学习中每次迭代的效果与收敛速度,需要画出动态图形. 下面给出两个例子,分别可以画出动态条形图和动 ...

  7. Python 数据分析与展示笔记3 -- Matplotlib 库基础

    Python 数据分析与展示笔记3 – Matplotlib 库基础 Python 数据分析与展示系列笔记是笔者学习.实践Python 数据分析与展示的相关笔记 课程链接: Python 数据分析与展 ...

  8. 用python绘制熊猫图案_在matplotlib中绘制熊猫日期

    我有一个固定宽度的数据文件,其中包含日期,但当我试图绘制数据时,日期没有正确地显示在x轴上. 我的文件看起来像2014-07-10 11:49:14.377102 45 2014-07-10 11:5 ...

  9. python plot画简单的曲线图

    python plot画简单的曲线图 ubuntu jupyter notebook 画简单的曲线图,但显示中文时有问题,以下画曲线图指令和中文显示解决方法: 1.简单代码 import matplo ...

最新文章

  1. 【动态库链接】python调用C
  2. 下拉加载 实现 java_[Java教程]iscroll5实现一个下拉刷新上拉加载的效果
  3. 云计算机房所用服务器,什么是云机房、云服务器、云主机?这三者有什么区别?...
  4. CCNET配置文件配置工具
  5. 使用Properties集合存储数据,遍历取出Properties集合中的数据
  6. JAVA中数组Array与List互转
  7. ajax反序列化出错,将数据从jquery ajax请求传递给wcf服务失败了反序列化?
  8. 使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络
  9. JDK,JRE,JVM三者关系
  10. (45)Verilog HDL 秒灯电路设计
  11. detr 历史解析代码_视觉/ DETR变压器
  12. 星痕 轻松实现大屏数据可视化_数据可视化的一些思考丨如何做出令人满意的大屏可视化设计(一)...
  13. Dev-Cpp_6.0下载
  14. 我奋斗了十八年不是为了和你喝一杯咖啡
  15. 第一章 教育基础(06 小学课程)
  16. 系统性谈谈软件可靠性——第3讲:软件可靠性设计方法
  17. python制作的简单程序_Python如何制作简易收银小程序
  18. 软件测试为什么评审,为什么要做设计评审和测试用例评审
  19. 手机充电器的D+,D-电压
  20. C# TCP/IP网络数据传输及实现

热门文章

  1. 苹果wwdc2019_我从苹果中学到的东西拒绝了我获得WWDC的奖学金
  2. Hadoop 系列之 HDFS
  3. Oracle数据库启动以及说明
  4. C# LINQ to XML
  5. 【opencv学习】RANSAC算法在图像拼接中的应用实战
  6. [机器学习-总结] 什么是准确率, 精确率,召回率和(精确率和召回率的调和平均)
  7. python判断nan格式_关于Python中Inf与Nan的判断问题详解
  8. vector中删除元素后,如何有效的释放无效元素的内存
  9. 【C++】函数的形参
  10. 循环序列模型 —— 1.6 语言模型和序列生成