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

如何用Contour、Contourf绘制L0范数与Inf范数的等高图?

如何用contourf和contour绘制L0范数与Inf范数的等高线图

嗨,很高兴你已经搞定了其他范数的可视化!针对L0和Inf范数的特殊性质,咱们得稍微调整下实现方式,我来给你详细说说:

一、绘制Inf范数(L∞)的等高线图

Inf范数的定义很直观:对于二维向量(x,y),L∞范数是max(|x|, |y|),它的等高线是轴对齐的正方形。这个函数是分段线性的,直接用常规网格计算就能得到清晰的图形,注意保证网格分辨率足够高,再加上等比例轴就能避免图形拉伸。

示例代码:

import numpy as np
import matplotlib.pyplot as plt

# 创建网格
x = np.linspace(-3, 3, 100)
y = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(x, y)

# 计算每个网格点的Inf范数
L_inf = np.maximum(np.abs(X), np.abs(Y))

# 绘制等高线
plt.figure(figsize=(6,6))
contourf_plot = plt.contourf(X, Y, L_inf, levels=10, cmap='viridis')
# 高亮标注范数为1的边界
plt.contour(X, Y, L_inf, levels=[1], colors='red', linewidths=2)
plt.colorbar(contourf_plot)
plt.title('L∞ (Inf) Norm Contour Plot')
plt.xlabel('x')
plt.ylabel('y')
plt.axis('equal')  # 保证正方形不被拉伸
plt.show()

二、绘制L0范数的等高线图

L0范数的性质比较特殊:它代表向量中非零元素的个数。对于二维(x,y)来说,取值只有三个离散值:

  • 0:仅原点(0,0)一个点;
  • 1:x轴或y轴(排除原点);
  • 2:平面上除坐标轴和原点外的所有区域。

因为contour系列函数基于连续数值场,所以我们需要手动构造离散的数值区域,再结合特殊标注来呈现:

示例代码:

import numpy as np
import matplotlib.pyplot as plt

# 创建高分辨率网格,避免浮点精度问题
x = np.linspace(-3, 3, 200)
y = np.linspace(-3, 3, 200)
X, Y = np.meshgrid(x, y)

# 构造L0范数的数值场
L0 = np.zeros_like(X)
# 标记"非零元素个数为1"的区域:x轴或y轴(排除原点)
mask_single_nonzero = (np.isclose(X, 0) | np.isclose(Y, 0)) & ~(np.isclose(X, 0) & np.isclose(Y, 0))
L0[mask_single_nonzero] = 1
# 标记"非零元素个数为2"的区域:x和y都不为0
mask_two_nonzero = ~np.isclose(X, 0) & ~np.isclose(Y, 0)
L0[mask_two_nonzero] = 2

# 绘制可视化
plt.figure(figsize=(6,6))
# 用contourf填充三个离散区域
contourf_plot = plt.contourf(X, Y, L0, levels=[-0.5, 0.5, 1.5, 2.5], 
                             colors=['white', 'lightblue', 'lightgreen'])
# 手动标注范数为1的边界(坐标轴)
plt.axvline(0, color='red', linewidth=2)
plt.axhline(0, color='red', linewidth=2)
# 标注范数为0的原点
plt.scatter(0, 0, color='black', s=50, zorder=10)
# 调整颜色条刻度
plt.colorbar(contourf_plot, ticks=[0,1,2])
plt.title('L0 Norm Contour Plot')
plt.xlabel('x')
plt.ylabel('y')
plt.axis('equal')
plt.show()

这样就能准确呈现L0和Inf范数的特征图形啦,你可以根据需求调整颜色、网格分辨率或者标注样式~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:27:13