画子图的教程网上一搜一大堆,不过我在画的时候还是出了点奇奇怪怪的问题,依然是聊一聊我遇到的问题,尽管最终呈现效果还行,但是还是被几个小问题卡住了,比如共用坐标轴设置了跟没设置一样,之后再找找大佬问一下吧。。。

大概的思路和此前一样,利用函数和循环来做重复的工作,不过由于存在子图和共用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和标题相关推荐

  1. latex如何设置字体并加粗_Latex设置字体大小,加粗,加下划线,变斜体_孩纸气_新浪博客...

    Latex 设置字体大小命令由小到大依次为: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE \huge ...

  2. 【Python气象绘图临摹】图像绘制(下):地理子图GeoAxes、xy轴设置、应用ncl色阶colormap、各标题、海岸线、添加文本、添加矩形框

    文章目录 前言 plt.fig.ax.三者绘制区别: GeoAxes地图投影:绘图投影和数据投影 x轴.y轴设置: 多个子图之间的间距调节: 图上添加文本.矩形框: python中ncl色阶color ...

  3. 在html中加粗字体的文本链接,css如何设置超链接字体加粗效果

    css如何设置超链接字体加粗效果 发布时间:2020-11-18 10:23:39 来源:亿速云 阅读:140 作者:小新 小编给大家分享一下css如何设置超链接字体加粗效果,希望大家阅读完这篇文章后 ...

  4. 怎么设置能使电脑运行更快

    1.设定虚拟内存 硬盘中有一个很宠大的数据交换文件,它是系统预留给虚拟内存作暂存的地方,很多应用程序都经常会使用到,所以系统需要经常对主存储器作大量的数据存取,因此存取这个档案的速度便构成影响计算机快 ...

  5. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、为多个子图添加总标题(main title)、自定义设置主标题字体类型、字体大小、字体颜色等

    Python使用matplotlib函数subplot可视化多个不同颜色的折线图.为多个子图添加总标题(main title).自定义设置主标题字体类型.字体大小.字体颜色等 目录

  6. Android 设置TextView字体加粗

    今天,简单讲讲Android里如何设置TextView字体加粗. 不废话了,用过多次,还是没记住.直接上代码. 1.布局文件中这样设置即可: XML/HTML代码 android:textStyle= ...

  7. 超级计算机燕 排名,第一卷 六年之前 HK171 舍弃的超级计算机燕? (485加更)

    第一卷 六年之前 HK171 舍弃的超级计算机燕? (485加更) 奥克兰却是怒瞪了刘杰一眼,"小子,这还刚刚当上伯爵,就和我来讨价还价了?"摇了摇头,"不行,我是绝对不 ...

  8. 超级计算机燕 排名,正文 第一卷 六年之前 HK171 舍弃的超级计算机燕? (485加更)...

    正文 第一卷 六年之前 HK171 舍弃的超级计算机燕? (485加更) 作者:K更新时间: 奥克兰却是怒瞪了刘杰一眼,"小子,这还刚刚当上伯爵,就和我来讨价还价了?"摇了摇头,& ...

  9. 酷点0.95发布,矩形框换肤、设置、独立开启……更酷啦

    Vista之家(www.vista123.com):酷点 0.95发布,矩形框换肤.设置.独立开启--更酷啦 ! 春节之前的最后一个版本,酷点0.95来啦.这个版本中做了不少的改进,大家看看下面的更新 ...

最新文章

  1. Factory-pattern 三种工厂模式
  2. Ext JS学习第十六天 事件机制event(一)
  3. LiteIDE 在 Windows 下为 Go 语言添加智能提示代码补全
  4. Angular 应用的DevDependencies
  5. 一根火柴可以将一瓶大可乐吊起来吗?
  6. 另一个分区工具:GNU 的 parted(转)
  7. 光影mod_MOD墨设设计丨天海之间的乌托之城
  8. 构造函数和实例化原理
  9. 分苹果(信息学奥赛一本通-T1081)
  10. HDU 4379 水题,大水,但我WA了很多次,做了很久
  11. Django深入模板引擎
  12. 网页打印服务器无法创建对象,打印问题,小编教你怎么解决automation服务器不能创建对象...
  13. 关于单向散列hash函数破解 彩虹表的简单理解
  14. 利用python实现杜利特尔分解法
  15. 女儿提前晒 iPhone X,攻城狮老爸被苹果解雇;Linux Kernel 4.14-rc7 发布
  16. ENVI背景值nodata或NAN解决方法/ArcGIS栅格影像背景颜色去除
  17. 2021年中国纯电动车产量、销量及投资情况分析[图]
  18. AUTOSAR LIN Introduction
  19. 关于 el-table-column type属性
  20. [AFCTF2018]One Secret, Two encryption(考点:公钥解析,gcd())

热门文章

  1. udp组播的应用场景
  2. python unittest
  3. Python nltk包
  4. 敏捷开发需求文档_需求的长期,敏捷文档
  5. node.js编写网页_为Node.js编写可扩展架构
  6. firebase连接不上_如何在Firebase上托管Blazor应用程序
  7. git规则写法_3条简单的规则将帮助您成为Git大师
  8. eos测试规格_希望您的测试更有效? 这样写您的规格。
  9. Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_
  10. matlab的m函数入门2