pcl如何设置colorbar_突然加更 | 子图、colorbar和标题
画子图的教程网上一搜一大堆,不过我在画的时候还是出了点奇奇怪怪的问题,依然是聊一聊我遇到的问题,尽管最终呈现效果还行,但是还是被几个小问题卡住了,比如共用坐标轴设置了跟没设置一样,之后再找找大佬问一下吧。。。
大概的思路和此前一样,利用函数和循环来做重复的工作,不过由于存在子图和共用colorbar的情况,使用了一下返回参数之类的小技巧XD,我感觉这些还是挺好用的(抬头挺胸)。
继续是用EAR5 hourly data on pressure levels from 1979 to present的再分析资料,绘制了200hPa、500hPa、700hPa和850hPa的相对湿度和风场。
首先,我们要新建一个大的画布,设置好它的大小和分辨率:
fig = plt.figure(figsize=(12,8),dpi=150)
我们需要画同一时刻四个不同层次,因此我们在这个大画布里设置四个子图,给它们各自起一个名字:
ax1 = plt.subplot(221, projection = proj)
ax2 = plt.subplot(222, projection = proj)
ax3 = plt.subplot(223, projection = proj)
ax4 = plt.subplot(224, projection = proj)
(这里没有用subplots()是因为它好像不支持ccrs.PlateCarree()的投影方式,我就只能这样来做了。而且不能用这个新建子图的方式也让我没办法令子图共用坐标轴,不知道具体是哪里出了问题。。。)
但是,在调用函数的时候,当然还是名字都一样好写一点咯~只画4层情况的话,我使用了range来控制读取的层次,那么,如何将有规律的名字字符串转换为变量的名字,再传入自定义函数中呢?我使用了locals()来达成目的。
for lev in range(0,4):r = obj['r'][0][lev][:][:]u = obj['u'][0][lev][:][:]v = obj['v'][0][lev][:][:]the_string = f'ax{lev+1}'ax = locals()[the_string]ac = RHLevel(r, u, v, ax, lev)
为什么要令函数等于“ac”呢?由于四张图片所使用的填色规则都是一样的,为了看起来顺眼,只需要一条colorbar作为图例会好很多。所以,我们可以将画相对湿度的语句传出,在循环的外部利用该信息绘制整张图的colorbar。
def RHLevel(r, u, v, ax, lev):......ac = ax.contourf(lons[248:288,420:480],lats[248:288,420:480],r[248:288,420:480],levels=np.arange(60,110,10),cmap='Greens',extend='both', alpha=0.9)return ac
由于返回了ac的信息,所以在调用函数之后该函数是有一个“结果”的,可以为这个结果“起名”,这样就可以在循环外用传递出来的结果来自定义colorbar了:
ac = RHLevel(r, u, v, ax, lev)
cb = fig.colorbar(ac, cax = cbar_ax,orientation='horizontal',spacing='proportional')
然后,就可以利用colorbar指令来定义它的位置、方向了,在这里,l, b, w, h分别是指该colorbar的左侧起始点、下侧起始点、宽度和高度,数字则是百分比,比如说0.25是指大画布的宽的0.25倍:
l,b,w,h = 0.25, 0.05, 0.5, 0.02
rect = [l,b,w,h]
cbar_ax = fig.add_axes(rect)
cb = fig.colorbar(ac, cax = cbar_ax,orientation='horizontal',spacing='proportional')
为了标出不同图片所对应的层次,我们可以在函数中就给每一个子图设置一个小标题。loc=''可以设置该标题的对齐位置,在这里标题向左对齐。
ax.set_title(f'{level[lev]}hPa',fontsize=12,loc='left')
在大图(循环外)中设置整张图的标题(和子图标题不一样噢),具体有什么区别可以搜一下fig/ax/plt的区别,有不少文章都讲得很详细:
plt.suptitle(f'2020年5月21日00时(世界时)各层相对湿度与风场',fontsize=18)
这次用到的新东西大概就是这些,感谢你的阅读!
敬请各位大佬批评指正_(:3
pcl如何设置colorbar_突然加更 | 子图、colorbar和标题相关推荐
- latex如何设置字体并加粗_Latex设置字体大小,加粗,加下划线,变斜体_孩纸气_新浪博客...
Latex 设置字体大小命令由小到大依次为: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE \huge ...
- 【Python气象绘图临摹】图像绘制(下):地理子图GeoAxes、xy轴设置、应用ncl色阶colormap、各标题、海岸线、添加文本、添加矩形框
文章目录 前言 plt.fig.ax.三者绘制区别: GeoAxes地图投影:绘图投影和数据投影 x轴.y轴设置: 多个子图之间的间距调节: 图上添加文本.矩形框: python中ncl色阶color ...
- 在html中加粗字体的文本链接,css如何设置超链接字体加粗效果
css如何设置超链接字体加粗效果 发布时间:2020-11-18 10:23:39 来源:亿速云 阅读:140 作者:小新 小编给大家分享一下css如何设置超链接字体加粗效果,希望大家阅读完这篇文章后 ...
- 怎么设置能使电脑运行更快
1.设定虚拟内存 硬盘中有一个很宠大的数据交换文件,它是系统预留给虚拟内存作暂存的地方,很多应用程序都经常会使用到,所以系统需要经常对主存储器作大量的数据存取,因此存取这个档案的速度便构成影响计算机快 ...
- Python使用matplotlib函数subplot可视化多个不同颜色的折线图、为多个子图添加总标题(main title)、自定义设置主标题字体类型、字体大小、字体颜色等
Python使用matplotlib函数subplot可视化多个不同颜色的折线图.为多个子图添加总标题(main title).自定义设置主标题字体类型.字体大小.字体颜色等 目录
- Android 设置TextView字体加粗
今天,简单讲讲Android里如何设置TextView字体加粗. 不废话了,用过多次,还是没记住.直接上代码. 1.布局文件中这样设置即可: XML/HTML代码 android:textStyle= ...
- 超级计算机燕 排名,第一卷 六年之前 HK171 舍弃的超级计算机燕? (485加更)
第一卷 六年之前 HK171 舍弃的超级计算机燕? (485加更) 奥克兰却是怒瞪了刘杰一眼,"小子,这还刚刚当上伯爵,就和我来讨价还价了?"摇了摇头,"不行,我是绝对不 ...
- 超级计算机燕 排名,正文 第一卷 六年之前 HK171 舍弃的超级计算机燕? (485加更)...
正文 第一卷 六年之前 HK171 舍弃的超级计算机燕? (485加更) 作者:K更新时间: 奥克兰却是怒瞪了刘杰一眼,"小子,这还刚刚当上伯爵,就和我来讨价还价了?"摇了摇头,& ...
- 酷点0.95发布,矩形框换肤、设置、独立开启……更酷啦
Vista之家(www.vista123.com):酷点 0.95发布,矩形框换肤.设置.独立开启--更酷啦 ! 春节之前的最后一个版本,酷点0.95来啦.这个版本中做了不少的改进,大家看看下面的更新 ...
最新文章
- Factory-pattern 三种工厂模式
- Ext JS学习第十六天 事件机制event(一)
- LiteIDE 在 Windows 下为 Go 语言添加智能提示代码补全
- Angular 应用的DevDependencies
- 一根火柴可以将一瓶大可乐吊起来吗?
- 另一个分区工具:GNU 的 parted(转)
- 光影mod_MOD墨设设计丨天海之间的乌托之城
- 构造函数和实例化原理
- 分苹果(信息学奥赛一本通-T1081)
- HDU 4379 水题,大水,但我WA了很多次,做了很久
- Django深入模板引擎
- 网页打印服务器无法创建对象,打印问题,小编教你怎么解决automation服务器不能创建对象...
- 关于单向散列hash函数破解 彩虹表的简单理解
- 利用python实现杜利特尔分解法
- 女儿提前晒 iPhone X,攻城狮老爸被苹果解雇;Linux Kernel 4.14-rc7 发布
- ENVI背景值nodata或NAN解决方法/ArcGIS栅格影像背景颜色去除
- 2021年中国纯电动车产量、销量及投资情况分析[图]
- AUTOSAR LIN Introduction
- 关于 el-table-column type属性
- [AFCTF2018]One Secret, Two encryption(考点:公钥解析,gcd())
热门文章
- udp组播的应用场景
- python unittest
- Python nltk包
- 敏捷开发需求文档_需求的长期,敏捷文档
- node.js编写网页_为Node.js编写可扩展架构
- firebase连接不上_如何在Firebase上托管Blazor应用程序
- git规则写法_3条简单的规则将帮助您成为Git大师
- eos测试规格_希望您的测试更有效? 这样写您的规格。
- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_
- matlab的m函数入门2