这几天一直在躺尸,只能找一些陈年材料和汇总了

本节提要:matplotlib绘图时,一些实用的解决办法。包括降水量等值线的色号、风矢杆显示不正确的问题、台风符号、散点图表示数值的两种办法、关于colobar的一些常用参数。

一、降水量等值线的色号

作为业务上常见应用,在绘制降水量等值线填色图时,不能使用系统默认的colormap,而需要指定降水等级和填色。本文使用中央气象台官网的降水量图片,通过一个木函中的取色功能调取颜色,参考了微信群中一个大佬提供的代码(具体是谁已经忘了,希望大佬不会砸门@

@)。

ax.bar(x1,y1,color='#A6F28F')ax.bar(x2,y2,color='#3DBA3D')ax.bar(x3,y3,color='#61BBFF')ax.bar(x4,y4,color='#0000FF')ax.bar(x5,y5,color='#FA00FA')ax.bar(x6,y6,color='#800040')

二、风矢杆显示了过多的圆圈

很久之前有个大佬发现自己绘制的图像出现了很多不正确的圆圈,巨佬二号提出了解决方案——因为中外风矢杆量级不一样,所以需要修改风矢杆的风速大小。

大佬出现问题的图是这一张:

我尝试本地风场绘图:

plt.barbs(lon,lat,u,v,zorder=5)

如图,确实出现了许多圆圈,然而在实际数据中,这些数值为1m\s。通过巨佬提供的解决方案,绘制了新的风场图:

plt.barbs(lon,lat,u,v,barb_increments={'half':2,'full':4,'flag':20},zorder=5)

barb_increments={'half':2,'full':4,'flag':20}这一句,修改了风矢杆长短杆线和三角分别代表的风速大小。

三、台风符号

在将cartopy官网例子本土化的过程中,我发现matplotlib的marker中没有现成的台风符号,于是群内巨佬三号提供了解决方案:

方案一:通过数字6和9的叠加来产生台风符号

ax.scatter(x,y2,s=200,marker='$6$',color='crimson')ax.scatter(x,y3,s=200,marker='$9$',color='crimson')

方案二:通过自定义台风符号来绘制

def get_hurricane():u = np.array([ [2.444,7.553],[0.513,7.046],[-1.243,5.433],[-2.353,2.975],[-2.578,0.092],[-2.075,-1.795],[-0.336,-2.870],[2.609,-2.016] ])u[:,0] -= 0.098codes = [1] + [2]*(len(u)-2) + [2]u = np.append(u, -u[::-1], axis=0)codes += codesreturn mpath.Path(3*u, codes, closed=False)hurricane = get_hurricane()ax.scatter(x,y1, s=350, marker=hurricane,edgecolors="crimson", facecolors='none', linewidth=3)

表面上看起来好像两个都可以在绘图实例中使用,但是6与9叠加有一个致命缺陷就是对每一个位置都需要微调,数字9必须比数字6低一点,这样才能产生台风符号,否则就是这样的:

总结下来,在绘制一个台风符号时,可以使用6与9叠加,绘制多个台风符号时,推荐使用def 台风(复制粘贴到程序中即可使用)

四、散点图表示数值大小的两种办法

散点图常用的有两种表示数值大小的办法,一种是通过控制s,即圆圈直径来表示数值;一种是通过控制颜色映射来表示数值。

ax1.scatter(lon,lat,s=number*50,c='blue',alpha=0.75,edgecolor='k')

ax.scatter(lon,lat,s=150,c=number,cmap='cool',alpha=0.75)

五、Colorbar的一些参数

经常有同学在群里讨论色条的尖尖角是怎么来的,于是将color常用的一些参数命令翻译出来了。

ax

代表你需要传入色条的ax

shrink=0.88

代表色条的相对长度

orientation='horizontal'

代表色条时横向还是竖向,vertical代表垂直;horizontal代表水平

cax

表示你需要绘制色条的绝对位置

pad

色条和子图ax之间的距离

extend=’neither’

色条的两头是否变尖,默认为neither,两头为方的。both表示两头变尖。min表示数值小的那头变尖。max表示数值大的那头变尖

ticks

默认将根据你的ax里的间距大小自动分配,可以传入一个列表自定义间距

format

控制刻度样式,如‘%.3f’表示保留三位小数

还是通过上面地闪频次的图来表现参数命令:

b=plt.colorbar(a,shrink=1,orientation='vertical',pad=0.005,extend='max',format='%.2f')

修改了shrink,可以看出其和主图的相对长度变化了。

修改了orientation,色条变为垂直方向。

修改了pad,可以看出色条和子图距离非常近了。

修改了extend,只显示max,即最大值方向变尖。

修改了format,使得刻度显示了两位小数。

关于cax呢,这里也展示一个例子:

position=plt.axes([0.5,0,0.1,1])b=plt.colorbar(a,cax=position,shrink=1,orientation='vertical',pad=0.005,extend='max',format='%.2f')

我们给了colorbar的cax一个绝对位置[0.5,0],表示色条从图上的相对于x轴一半的位置,相对于y轴的起点位置开始绘制。这样色条就被放在中间位置了。我们尝试修改绝对位置的值来深入理解。

position=plt.axes([0.25,0,0.4,0.75])b=plt.colorbar(a,cax=position,shrink=1,orientation='vertical',pad=0.005,extend='max',format='%.2f')

可以看出,色条被移动到差不多x轴上0.25的位置了,色条变宽了,变短了,因为我们将[0.5,0,0.1,1]变成了[0.25,0,0.4,0.75],第三个数表示色条x方向的变化,0.1变为0.4,所以变宽了。第四个数表示色条y方向的变化,1变成了0.75,所以变短了。

Cartopy专辑已经上线

往期回顾:

欢迎关注云台书使公众号

python气象学_Python气象绘图教程(十)相关推荐

  1. python气象学_Python气象绘图教程(二)

    大多数的人整天对着教材课本大概都会昏昏欲睡,这时候就需要不可名说 粉色 网站出马了: 学习网站哪家最强啊?(战术仰头) 请在搜索栏输入python入门之类的来获取更多资源吧,另外强烈推荐一个大神的视频 ...

  2. python色标_Python: 气象绘图实例之台风

    前段时间袭击中国的超强台风"利奇马",以及这两天袭击美国的五级飓风"多利安",让我们感受到了大自然的力量.所以,今天分享一个简单的Python实例,也算是延续前 ...

  3. python绘制剖面图_Python气象绘图教程—(十九)剖面图

    本节提要:简要谈谈地形剖面图.纬度高度剖面图.时间纬度图的绘制方法. 提要中提到的这几种图形都是在气象上比较常用的,地形剖面主要研究地貌对降雨.气流的影响作用:纬度高度剖面图可以用来分析降雨的某些条件 ...

  4. python图片分析中央气象台降水_Python气象绘图教程(十)

    这几天一直在躺尸,只能找一些陈年材料和汇总了 本节提要:matplotlib绘图时,一些实用的解决办法.包括降水量等值线的色号.风矢杆显示不正确的问题.台风符号.散点图表示数值的两种办法.关于colo ...

  5. python气象绘图速成_Python气象绘图教程(十六)—Cartopy_6

    本节提要:使用cartopy进行市县的色块填色.模仿geopandas绘制颜色图 一.利用cartopy进行市县的色块填色 其实geopandas在这方面比cartopy更加专业,由于是基于panda ...

  6. python气象绘图_Python气象绘图教程(三)

    更多的关于基础折线图技巧 前面已经讲了很多关于折线图的常用参数,但是像颜色关键词在黑白文献中应该如何修改呢?plot()提供了一个marker=' '参数,其具体变化如下: plt.plot(x,te ...

  7. python气象绘图_Python气象绘图教程特刊(一)

    今天停更基础教程(我就鸽了,你来打我呀(开个玩笑)). 结合气象家园上萝卜和晋陵(姑且这么称呼吧,希望他们不介意)的白化,能实现业务上的基础需求.现在我撰写了详细的使用流程,maskout程序知识版权 ...

  8. Python 柱状图 横坐标 名字_Python气象绘图教程(四)

    本节提要:回顾复习,新的调整命令. 一.回顾复习 前面讲到Python库包的下载与安装,推荐使用conda命令进行安装,通过conda list查看当前已经安装好的库包及版本. 画图步骤:①impor ...

  9. 经纬度绘图_Python气象绘图教程(二十二)—mpl_toolkits.axes_grid1

    本节提要:挑选了matplotlib.mpl_toolkits.axes_grid1部件中比较有意思的几个类和功能简单解决一点点绘图中的常见问题. 一.make_axes_locatable 首先我们 ...

  10. mysql 等距_Python气象绘图教程(十一)

    一点说明:这个教程的出现是无计划的,所以缺乏提纲,很多人感觉每节之间没有系统.我可能在后面会进一步的归纳总结,以word文档或者pdf的样式上传至气象家园. 本节提要:简单的刻度属性.轴标签.刻度格式 ...

最新文章

  1. python项目ImportError: Plotly express requires pandas to be installed.解决方案
  2. 第三次学JAVA再学不好就吃翔(part95)--Collections工具类
  3. 前端组件化-抽象公共组件类
  4. java 接口与包_java常用类包接口
  5. 互联网晚报 | 10月30日 星期六 | 微软市值超越苹果;华为前三季度销售收入4558亿元;《长津湖》成2021全球票房冠军...
  6. 有关于婚姻经济学的经典对话
  7. C语言递归分形实验-曼德勃罗集
  8. java读取文件到字符串_Java读取文件到字符串
  9. mysql ibatis 批量插入_ibatis 批量插入逻辑
  10. 简单四步calibre推送到kindle
  11. SPSS——描述性统计分析——描述
  12. 【解决U盘无法访问】
  13. LDPC码的EXIT图
  14. 插值与拟合 (一) : 拉格朗日多项式插值 、Newton插值 、分段线性插值、Hermite插值 、样条插值、 B 样条函数插值、二维插值
  15. SEO—搜索引擎优化
  16. Token Bucket 令牌桶算法
  17. iOS网络NSURLSession使用详解
  18. 利用python爬取租房信息_Python爬虫实战(1)-爬取“房天下”租房信息(超详细)
  19. java 微信开发收到乱码_微信公众号开发调用微信接口得到的参数中文变成乱码问题...
  20. Python使用QQ邮箱发送验证码

热门文章

  1. 智能家居控制系统制作技术_智能家居控制系统是什么_智能家居控制系统的由来-装修攻略...
  2. 你们这些90后,都是什么神仙小精灵?
  3. 软件测试三分钟自我介绍
  4. Android intent category大全
  5. 计算机病毒大多数具有自身复制的功能,《计算机基础》第五章练习题
  6. 计算机指令定时关机,电脑使用命令设置定时关机
  7. appleid注册服务器错误,连接apple id 服务器时出错(Apple ID 验证连接失败,试试这招)...
  8. Android源代码目录结构
  9. 计算机导论怎么不挂科,我们删除的数据,最后都去了哪里?
  10. C语言2--进制和运算符