阅读 316

Python matplotlib 绘制流线图

复习回顾

在Python关于绘图,Mlab提供开源的matplotlib模块,不仅可以绘制折线图、柱状图、散点图等常规图外,还支持绘制量场图、频谱图、提琴图、箱型图等特殊图,例举往期文章可前往查看详情。

  • specgram()方法绘制频谱图用于振幅频谱:matplotlib 绘制频谱图

  • boxplot()方法绘制箱型图用于数据分布:matplotlib 绘制箱型图

  • quiver()方法绘制量场图用于电磁场分析:matplotlib 绘制量场图

  • violinplot()绘制展示数据分布和概率情况:matplotlib 绘制提琴图

我们日常生活中经常会关注天气预报,在换季的时候,播报员会讲解气流流动情况。在天气预报过程中,气象专家们会根据流线图绘制的气流情况,来预测当地的天气情况。

流线图.png

本期,我们将学习matplotlib.pyplot.streamplot()方法相关属性的学习,let's go~

1. 流线图概述

  • 什么是流线图?

    • 流线图通过流线和箭头的组合绘制,来表示某一时段流线的运行情况、

    • 流线图上的箭头表示流向,流线上的形状表示流强度

    • 流线图可分为气流图、等风速线、变高图等

    • 流线图中的流线可以合并、汇合、分交,但不能交叉

  • 流线图应用场景

    • 流线图通常用于气象学中研究风速、气流、洋流的流向情况

    • 流程图是风场分析的重要图表,流线的稀密度与风速大小成正比

  • 获取流线图方法

    import matplotlib.pyplot as plt  plt.streamplot(x,y,u,v) 复制代码

2. 流线图属性

  • 设置流线图密度

    • 关键字:density

    • 默认值为:1

    • 取值类型为:浮点型或者元组

    • 控制流线图密度,当density=1时,网格会被划分为30*30网格

    • 对于设置每个方向上密度,可以使用元组(x,y)

  • 设置流线宽度

    • 关键字:linewidth

    • 取值类型为:浮点型或者二维数组

    • 使用二维数组,可以改变流线在网格上的线宽

    • 阵列的形状必须要与u、v相同

  • 设置流线颜色

    • 表示颜色的英文单词:如绿色"g"

    • 表示颜色单词的简称如:红色"r",黄色"y"

    • RGB格式:十六进制格式如"#88c999";(r,g,b)元组形式

    • 可以转入颜色列表

    • 关键字:color

    • 取值可为:

    • 当使用cmap时,则需要color设置为二维数组,否则无效

  • 设置流线缩放

    • 关键字:norm

    • 默认为将流线拉伸到(0,1)

    • 仅在颜色为数组时使用

  • 设置流线颜色系

    • 关键字:cmap

    • 取值形式为:颜色表_r

    • 可取值常用的有:'Accent', 'Accent_r', 'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn', 'BuGn_r', 'BuPu', 'BuPu_r', 'CMRmap', 'CMRmap_r', 'Dark2', 'Dark2_r', 'GnBu', 'GnBu_r', 'Greens'

3. 绘制流线图步骤

  • 导入matplotlib.pyplot类

import matplotlib.pyplot as plt 复制代码

  • 调用numpy库arange()、random()、randint()等准备x,y,u,v数据

    x = np.arange(1,10) y = np.arange(1,10) u,v = np.meshgrid(np.sin(x),np.sin(y)) 复制代码

    • x,y:一维数组/二维数组

    • u,v:二维数组

    • 当为二维数组,可以通过np.meshgrid(x,y),np.mgrid()创建

  • 调用pyplot.streamplot()绘制流线图

plt.streamplot(x,y,u,v,density=[0.5,1]) 复制代码

  • 调用pyplot.show()渲染显示出流线图

plt.show() 复制代码

image.png

  • 设置linewidth、color、cmap属性绘制流线图

plt.streamplot(x,y,u,v,density=[0.5,1],color=u,cmap="Accent_r",linewidth=3) 复制代码

image.png

4. 小试牛刀

我们学习了关于绘制流线图相关属性,我们来实操一下控制流线的起点数据

  • 调用np.mgrid[]定义x,y二维数据

  • 调用pyplot.streamplot()方法绘制流线图

  • 调用pyplot.plot()方法绘制折线图,使用marker属性标记

y,x= np.mgrid[-3:3:100j, -3:3:100j] u = -1-x**2+y v = 1+x-y**2 seed_points = np.array([[-2, -1, 0, 1, 2, -1], [-2, -1, 0, 1, 2, 2]]) plt.streamplot(x,y,u,v,density=0.6,color=u,cmap="autumn",linewidth=1,start_points=seed_points.T) plt.plot(seed_points[0],seed_points[1],"^",color="b") plt.show() 复制代码

image.png

总结

本期,我们对matplotlib.pyplot提供streamplot()方法绘制流线图相关属性的学习。流线图通常使用在气象学中,研究气流变化情况。


作者:盆友圈的小可爱
链接:https://juejin.cn/post/7035918319156723748


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐