当前位置:首页>python>Python Matplotlib绘制伪彩色图

Python Matplotlib绘制伪彩色图

  • 2026-10-10 12:33:04
Python Matplotlib绘制伪彩色图
源代码:
import matplotlib.pyplot as pltimport numpy as npplt.style.use('_mpl-gallery-nogrid')# make data with uneven sampling in xx = [-3, -2, -1.6, -1.2, -.8, -.5, -.2, .1, .3, .5, .8, 1.1, 1.5, 1.9, 2.3, 3]X, Y = np.meshgrid(x, np.linspace(-3, 3, 128))Z = (1 - X/2 + X**5 + Y**3) * np.exp(-X**2 - Y**2)# plotfig, ax = plt.subplots()ax.pcolormesh(X, Y, Z, vmin=-0.5, vmax=1.0)plt.show()
源代码详解:
# 1. 导入库import matplotlib.pyplot as pltimport numpy as np# 2. 设置内置绘图样式plt.style.use('_mpl-gallery-nogrid')# 3. 生成数据x = [-3, -2, -1.6, -1.2, -.8, -.5, -.2, .1, .3, .5, .8, 1.1, 1.5, 1.9, 2.3, 3]# x 是一个列表,包含 16 个点。# 这些点在 x 轴上的采样不均匀(例如从 -3 到 -2 间隔 1,之后间隔逐渐变小,再变大)。X, Y = np.meshgrid(x, np.linspace(-3, 3, 128))# np.linspace(-3, 3, 128) 在 y 方向生成 128 个均匀分布的点,范围从 -3 到 3。# np.meshgrid 根据 x(不均匀)和 y(均匀)创建二维网格:# X 的每一行都是 x 列表的重复,所以 X 的形状是 (128, 16),每一列对应一个 x 值,每一行对应同一个 y 值。# Y 的每一列都是 y 列表的重复,所以 Y 的形状也是 (128, 16),每一行对应一个 y 值。# 因此,最终的网格在 x 方向上是非均匀的(因为 x 不均匀),在 y 方向上是均匀的。# 4. 计算 Z 值Z = (1 - X/2 + X**5 + Y**3) * np.exp(-X**2 - Y**2)# 这是一个二维函数,具有复杂的形状,exp(-X^2 - Y^2) 部分使其在原点附近衰减。# 5. 绘制图形fig, ax = plt.subplots()    # 创建一个图形(figure)和一个坐标轴(axes)ax.pcolormesh(X, Y, Z, vmin=-0.5, vmax=1.0)# X, Y 定义了网格的坐标(非均匀)。# Z 是每个网格点的颜色值。# vmin=-0.5, vmax=1.0 设定颜色映射的范围,将 Z 值限制在 [-0.5, 1.0] 之间,# 小于 -0.5 的值映射为同一种颜色,大于 1.0 的亦然。这有助于突出中间范围的细节。plt.show()
总结:
  • 使用pcolormesh(X, Y, Z)方法绘制基于非均匀网格的伪彩色图(pcolormesh);
  • 适合处理非均匀采样的数据,pcolormesh 可以灵活地接受不规则网格坐标
  • pcolormesh 比 imshow 更灵活,因为 x 和 y 向量不需要等间距(实际上它们甚至可以是倾斜的)。

                特性
imshowpcolormesh
网格类型
仅支持 均匀、矩形 网格(像素或单元格等间距)
支持 任意四边形网格(包括均匀和非均匀、甚至不规则)
坐标输入
只需提供二维数组 Z,可选 extent 参数指定整体边界
必须提供二维坐标数组 X, Y(或一维边界向量),定义每个单元格的角落位置
单元格位置
像素中心位于整数坐标,或通过 extent 设置边界
单元格由四个角点定义,可完全自定义形状
轴方向
默认 y 轴从上到下(图像坐标系),可通过 origin 改变
默认 y 轴从下到上(笛卡尔坐标系),但也可通过 origin 调整
性能
较快,因为网格规则,直接映射为图像纹理
相对较慢,需要构建每个四边形并进行渲染
插值
支持多种插值方式(如 interpolation='bilinear')
不支持插值,每个单元格颜色恒定(无平滑过渡)
常用场景
图像显示、均匀采样的热图、矩阵可视化
非均匀采样数据、有限元结果、地理投影网格、不规则网格数据
imshow方法绘图详解文章

Python Matplotlib将数据显示为图像

数智岩隧,公众号:数智岩隧Python Matplotlib将数据显示为图像

最新文章

随机文章