You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Matplotlib contourf双矩阵异色同图绘制的技术问询

如何在同一张contourf图中用不同colormap绘制互斥非零区域的两个矩阵

没问题,你的需求完全可以轻松实现——因为两个矩阵的非零区域完全互斥,我们可以直接分别调用contourf绘制,根本不用担心图层重叠冲突,它们的有效区域本来就不会互相覆盖。你的示例代码已经找对了方向,我再帮你优化一下细节,让效果更贴合机器学习决策面的展示需求:

优化后的完整代码

import numpy as np
import matplotlib.pyplot as plt

# 生成可复现的示例数据
np.random.seed(42)
matrixA = np.random.randn(10, 10)
matrixB = np.random.randn(10, 10)

# 快速创建互斥掩码矩阵(比索引操作更简洁)
mask = np.random.uniform(0, 1, (10, 10))
matrixA_masked = np.where(mask > 0.5, matrixA, 0)
matrixB_masked = np.where(mask <= 0.5, matrixB, 0)

# 创建网格坐标
x = np.linspace(0, 10, 10)
X, Y = np.meshgrid(x, x)

# 分别绘制两个矩阵的contourf,使用不同colormap
plt.contourf(X, Y, matrixA_masked, cmap='gray', levels=20)
plt.contourf(X, Y, matrixB_masked, cmap='winter', levels=20)

# 可选:添加双颜色条,分别对应两个矩阵的数值范围
from matplotlib.colors import Normalize
from matplotlib.cm import ScalarMappable

# 只计算非零区域的数值范围,避免零值干扰颜色映射
norm_a = Normalize(vmin=matrixA_masked[matrixA_masked!=0].min(), 
                   vmax=matrixA_masked[matrixA_masked!=0].max())
norm_b = Normalize(vmin=matrixB_masked[matrixB_masked!=0].min(), 
                   vmax=matrixB_masked[matrixB_masked!=0].max())

sm_a = ScalarMappable(norm=norm_a, cmap='gray')
sm_a.set_array([])
sm_b = ScalarMappable(norm=norm_b, cmap='winter')
sm_b.set_array([])

plt.colorbar(sm_a, label='Matrix A 数值')
plt.colorbar(sm_b, label='Matrix B 数值')

plt.title('互斥区域双Colormap Contourf(机器学习决策面示例)')
plt.show()

关键细节说明

  • 互斥区域的天然优势:因为matrixA_masked和matrixB_masked的非零区域完全不重叠,第二次contourf只会在第一次没覆盖的区域渲染颜色,零值区域会被自动忽略,不会出现颜色覆盖的问题。
  • 代码简化:用np.where直接生成掩码矩阵,省去了手动索引赋值的繁琐步骤,代码更易读维护。
  • 颜色映射优化:通过只计算非零区域的vmin/vmax,避免零值拉低颜色映射的范围,让有效区域的颜色过渡更精准。
  • 平滑度提升:添加levels=20参数,让contourf的颜色分层更细腻,适合展示连续型的决策面数值。

分类决策面适配

如果你的场景是分类任务(矩阵存储的是类别标签而非连续数值),可以把contourf换成pcolormesh,这样每个区域会显示单一纯色,更贴合分类决策面的可视化需求:

# 分类场景示例代码片段
plt.pcolormesh(X, Y, matrixA_masked, cmap='gray', edgecolors='white')
plt.pcolormesh(X, Y, matrixB_masked, cmap='winter', edgecolors='white')

内容的提问来源于stack exchange,提问作者jdeJuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:30:50