python绘制等值线图_使用matplotlib绘制等值线图

等值线图

等值线图或等高线图在科学界很常用。这种可视化方法用由一圈圈封闭的曲线组成的等值线图表示三维结构的表面,其中封闭的曲线表示的是一个个处于同一层级或z值相同的数据点。

虽然等值线图看上去结构很复杂,其实用matplotlib实现起来并不难。首先,你需要用z=f(x,y)函数生成三维结构。然后,定义x、y的取值范围,确定要显示的区域。之后使用f(x,y)函数计算每一对(x,y)所对应的z值,得到一个z值矩阵。最后,用contour( )函数生成三维结构表面的等值线图。定义颜色表,为等值线图添加不同的颜色,效果往往会更好;也就是说,用渐变色填充由等值线划分成的区域。如下所示,用逐渐加深的蓝色阴影表示负值,而随着数值的增大,则逐渐该用黄色甚至红色。

d31b0ef41bd5ad6ea249896750ab97dfb7fd3c74.png?token=d3c9e269a3917771efab4c3f8257254e&s=59F283445AA48E4D46657C0D0300E0C1

8ad4b31c8701a18b0ffa2b604c4fa90c2838fe75.png?token=e132d2ce550884983c7c0a6056624537&s=6BA1AC40CC5C65CEBF123B190300D0F4

标准的渐变色组合(颜色表)如上所示,在实际应用中,要从多种颜色中选定你需要的颜色,把它赋给cmap关键字参数。

此外,如若使用等值线图,在该图的一侧增加图例作为对图表中所用颜色的说明几乎是必需的。在代码的最后增加colorbar( )函数即可实现该功能。下面我们将展示的图表会用另外一种颜色表,先是由黑色过渡到红色,再过渡到黄色,最后最大值使用白色。这种彩图中,cmap参数为plt.cm.hot。

f11f3a292df5e0fe8accbaae8d009aac5fdf7229.png?token=8db390145cb8020bb6165a7f43066501&s=E9F283449AA4864D1CDC65090300E0C3

3b87e950352ac65ca6d9796e29921c1592138ab0.png?token=305edc456e8a05eadf5fd6c301a25e6f&s=97AFD002D6ED6CAEA50BBA7B0300D068

极区图

另外一种取得了一定成功的高级图表是极区图。这种图表由一系列呈放射状延伸的区域组成,其中每块区域占据了一定的角度。因此若要用极区图表示两个不同的数值,分别指定它们在极区图中所占的分量;每块区域的半径r和它所占的角度,其实这就是极坐标(r,θ),是在坐标轴系中表示数据的另一种方法。从图表的角度来看,你可以将其视作兼有饼图和条状图特点的图表。之所以说它像饼图,是因为每个区域的角度所表示的是其所属类别占全部类别的比例。至于说它像条状图,是因为半径的长度表示某一类别的数值大小。

到目前为止,我们一直使用标准颜色集,每种颜色用单一字符颜色编码来表示(例如,r代表红色)。事实上。你可以自定义任意的颜色列表,方法是指定颜色列表,其中每个元素为字符串类型的RGB编码,其格式为#rrggbb。

奇怪的是,制作极区图需要使用bar( )函数,把角度θ列表和半径列表传递给它。你讲得到如下所示的极图:

aa18972bd40735fa388f05c44631a1b70f240831.png?token=8310560ce8ddcffd88c1aa9d5993a849&s=61F28364DABE8E4F1EDC34030300F0C2

5ab5c9ea15ce36d3b6b9c13aeb939483e850b1e4.png?token=6d4b1e22a8746c30f06e137441cf110b&s=5AA83C62DB397684C6CCCC670300F0A3

这个例子中,我们定义了一列#rrggbb格式的颜色值,其实还可以用颜色的实际名称来表示颜色。

a8ec8a13632762d07dfab2df718ca6fe503dc66b.png?token=f4f6f9113de48e32e2bec0358e9be964&s=61D28364DAB48E4F145CF4030300F0C2

e1fe9925bc315c60946d233a5dd165174b5477d4.png?token=4c451cf92bb06deb34add1d4d46ba203&s=5FA83862F02972A4A1913D4F0300F0E0

mplot3d

mplot3d工具集是matplotlib内置的标配,可用来实现3D可视化功能。如果生成的图形在单独的窗口显示,你还可以用鼠标旋转三维图形的轴进行查看。

mplot3d仍然使用Figure对象,只不过Axes对象要替换为该工具集的Axes3D对象。因此,使用Axes3D对象前,需要先将其导入进来。

from mpl_toolkits.mplot3d import Axes3D

下面一节我们将具体介绍实现3D可视化功能的例子。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值