python plot map_python的colormap总结(matplotlib+ncl+气象家园调色盘)
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+气象家园调色盘)相关推荐
- python plot 图像大小_设置matplotlib图像的figsize和dpi
我们可以通过两个参数来控制matplotlib图像的大小,在创建figure对象的时候,有figsize和dpi. figsize是一个tuple,用来指定width和height的inch: dpi ...
- python画图怎么调色_Python气象数据处理与绘图(19):如何使用NCL色板(调色盘思路相同)...
一. 使用NCL色板(使用调色盘文件思路相同) NCL的色板十分丰富,几乎可以涵盖平常所需.详见:传送门 那么我们能否将NCL的色板用在python中呢?答案当然是可以的. 我在气象家园发现了个帖子, ...
- python中等高线填充颜色_Python matplotlib使用colormap更改contourf plot中指定值的颜色...
我正在尝试使用colormap在matplotlib中创建一个填充的等高线图. 我想改变指定值的颜色. 例如, levs = [-3,-1,1,3] plt.contourf(x,y,z,levs,c ...
- python数据挖掘学习】十五.Matplotlib调用imshow()函数绘制热图
python数据挖掘学习]十五.Matplotlib调用imshow()函数绘制热图 #2018-03-28 14:47:19 March Wednesday the 13 week, the 087 ...
- 修改python plot折线图的坐标轴刻度
修改python plot折线图的坐标轴刻度,这里修改为整数: 代码如下: from matplotlib import pyplot as plt import matplotlib.ticker ...
- 用python画动图_Python使用matplotlib画动态图
机器学习需要使用python实现相应的算法,因此学习了Matplotlib中的画图. 当然为了能显示机器学习中每次迭代的效果与收敛速度,需要画出动态图形. 下面给出两个例子,分别可以画出动态条形图和动 ...
- Python 数据分析与展示笔记3 -- Matplotlib 库基础
Python 数据分析与展示笔记3 – Matplotlib 库基础 Python 数据分析与展示系列笔记是笔者学习.实践Python 数据分析与展示的相关笔记 课程链接: Python 数据分析与展 ...
- 用python绘制熊猫图案_在matplotlib中绘制熊猫日期
我有一个固定宽度的数据文件,其中包含日期,但当我试图绘制数据时,日期没有正确地显示在x轴上. 我的文件看起来像2014-07-10 11:49:14.377102 45 2014-07-10 11:5 ...
- python plot画简单的曲线图
python plot画简单的曲线图 ubuntu jupyter notebook 画简单的曲线图,但显示中文时有问题,以下画曲线图指令和中文显示解决方法: 1.简单代码 import matplo ...
最新文章
- 【动态库链接】python调用C
- 下拉加载 实现 java_[Java教程]iscroll5实现一个下拉刷新上拉加载的效果
- 云计算机房所用服务器,什么是云机房、云服务器、云主机?这三者有什么区别?...
- CCNET配置文件配置工具
- 使用Properties集合存储数据,遍历取出Properties集合中的数据
- JAVA中数组Array与List互转
- ajax反序列化出错,将数据从jquery ajax请求传递给wcf服务失败了反序列化?
- 使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络
- JDK,JRE,JVM三者关系
- (45)Verilog HDL 秒灯电路设计
- detr 历史解析代码_视觉/ DETR变压器
- 星痕 轻松实现大屏数据可视化_数据可视化的一些思考丨如何做出令人满意的大屏可视化设计(一)...
- Dev-Cpp_6.0下载
- 我奋斗了十八年不是为了和你喝一杯咖啡
- 第一章 教育基础(06 小学课程)
- 系统性谈谈软件可靠性——第3讲:软件可靠性设计方法
- python制作的简单程序_Python如何制作简易收银小程序
- 软件测试为什么评审,为什么要做设计评审和测试用例评审
- 手机充电器的D+,D-电压
- C# TCP/IP网络数据传输及实现
热门文章
- 苹果wwdc2019_我从苹果中学到的东西拒绝了我获得WWDC的奖学金
- Hadoop 系列之 HDFS
- Oracle数据库启动以及说明
- C# LINQ to XML
- 【opencv学习】RANSAC算法在图像拼接中的应用实战
- [机器学习-总结] 什么是准确率, 精确率,召回率和(精确率和召回率的调和平均)
- python判断nan格式_关于Python中Inf与Nan的判断问题详解
- vector中删除元素后,如何有效的释放无效元素的内存
- 【C++】函数的形参
- 循环序列模型 —— 1.6 语言模型和序列生成