matplotlib实现精细等高线图绘制与热力图教程

14 下载量 144 浏览量 更新于2024-09-03 收藏 223KB PDF 举报
本文将详细介绍如何使用Python的matplotlib库绘制等高线图。首先,我们要了解等高线图的基本概念,它在地理和机器学习领域中广泛应用,用于展示地形地貌或梯度下降算法中的函数值分布。等高线图的关键在于表示二维空间中同一高度点的集合,通过x和y坐标及这些坐标对应的函数值来呈现。 在实现过程中,文章引入了一个示例函数`def f(x, y): return (1 - x/2 + x**5 + y**3) * np.exp(-x**2 - y**2)`,这个函数用于计算特定坐标(x, y)下的高度值。虽然函数形式复杂,但在实际应用中我们只需知道它的输入输出关系即可。 创建等高线图的核心函数是`plt.contourf()`,但该函数需要网格数据(x和y的网格值)以及每个网格点的高度值。为此,我们使用`np.meshgrid()`将一维的x和y扩展为二维网格。下面是一段完整代码示例: ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt # 定义高度计算函数 def f(x, y): return (1 - x/2 + x**5 + y**3) * np.exp(-x**2 - y**2) # 创建x和y的均匀分布 n = 256 x = np.linspace(-3, 3, n) y = np.linspace(-3, 3, n) # 生成网格数据 X, Y = np.meshgrid(x, y) # 填充等高线(冷色图) plt.contourf(X, Y, f(X, Y)) # 显示结果 plt.show() # 若要显示热力图,更改颜色映射 plt.contourf(X, Y, f(X, Y), cmap=plt.cm.hot) # 直接显示等高线(无填充) C = plt.contour(X, Y, f(X, Y)) ``` 这段代码首先定义了高度函数,然后生成x和y的网格,并通过`np.meshgrid()`将其转换为适合`plt.contourf()`的网格数据。通过调用`plt.contourf()`,我们可以填充等高线区域,而`cmap=plt.cm.hot`则会切换到更暖色调的热力图。最后,`plt.contour()`函数用于直接绘制等高线轮廓,提供了不同的可视化选择。 通过以上步骤,读者可以掌握如何利用matplotlib绘制出美观且具有信息量的等高线图,无论是用于地理分析还是机器学习可视化,都能灵活运用。