Matplotlib 等值线图

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

阅读本章内容可以先了解极客教程的前面几个章节介绍的Matplotlib相关知识:饼图条形图,直方图,线性图,添加图例

虽然等值线图看上去结构很复杂,其实用matplotlib实现起来并不复杂,

  • 首先,用z=f(x,y)函数生成三维结构。
  • 然后,定义 x, y 的取值范围,确定要显示的区域。
  • 接着,使用函数f(x, y)函数计算每一对(x,y)所对应的z值,得到一个z值矩阵。
  • 最后,用函数contour()生成三维结构表面的等值线图。

定义颜色表,为等值线图添加不同颜色,也就是用渐变色填充等值线划分成的区域,效果会更好。如下所示,用逐渐加深的蓝色阴影表示负数,随着数值的增大,逐渐改成黄色,甚至红色。

import matplotlib.pyplot as plt
import numpy as np

def f(x, y):
        return (1 - y**5 + x**5) * np.exp(-x**2 - y**2)

dx = 0.01;dy=0.01
x = np.arange(-2.0, 2.0, dx)
y = np.arange(-2.0, 2.0, dy)
X, Y = np.meshgrid(x, y)
plt.title("geek-docs.com", fontsize=20, fontname="Times New Roman")
C = plt.contour(X, Y, f(X,Y), 8, colors='black')
plt.contourf(X, Y, f(X, Y), 8)
plt.clabel(C, inline=1, fontsize=10)
plt.show()

输出结果如下所示,等值线图可以表示一个表明的z值信息。
Matplotlib 等值线图

实际应用中,要从多种颜色中选定你需要的颜色,把它赋给cmp参数。此外,如若使用等值线图,在该图的一侧增加图例作为对图表中所有颜色的说明也是必需的。在代码的最后添加colorbar()函数即可实现该功能。

如下所示,图表使用了另外一种颜色表,先是由黑色过度到红色,再过度到黄色,最后最大值使用白色。这种彩图中,将plt.cm.hot设置给cmap参数。

import matplotlib.pyplot as plt
import numpy as np

def f(x, y):
        return (1 - y**5 + x**5) * np.exp(-x**2 - y**2)

dx = 0.01;dy=0.01
x = np.arange(-2.0, 2.0, dx)
y = np.arange(-2.0, 2.0, dy)
X, Y = np.meshgrid(x, y)
plt.title("geek-docs.com", fontsize=20, fontname="Times New Roman")
C = plt.contour(X, Y, f(X,Y), 8, colors='black')
plt.contourf(X, Y, f(X, Y), 8, cmap=plt.cm.hot)
plt.clabel(C, inline=1, fontsize=10)
plt.colorbar()
plt.show()

输出结果如下,用表示“热度”的颜色表可增强等值线图的吸引力。
Matplotlib 等值线图

极客教程相关文章推荐:
Matplotlib 饼图
Matplotlib 水平条形图
Matplotlib 条形图
Matplotlib 直方图
Matplotlib 线性图
Matplotlib 添加图例
Matplotlib 添加文本

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程