如何用Matplotlib绘制隐函数max{abs(x1),abs(x2)} ≤1的图像?
用Matplotlib绘制满足max(|x₁|, |x₂|) ≤1的图像
你要绘制的是一个以原点为中心、边长为2的正方形区域(边界及内部),以下是几种简单直接的实现方法:
方法1:直接绘制边界+填充区域
这种方式直观易懂,适合快速实现:
import matplotlib.pyplot as plt # 设置坐标轴范围,留出一点边距 plt.xlim(-1.5, 1.5) plt.ylim(-1.5, 1.5) # 绘制正方形四条边界 plt.plot([1, 1], [-1, 1], 'k-') # 右侧边 x=1 plt.plot([-1, -1], [-1, 1], 'k-') # 左侧边 x=-1 plt.plot([-1, 1], [1, 1], 'k-') # 顶部边 y=1 plt.plot([-1, 1], [-1, -1], 'k-') # 底部边 y=-1 # 填充内部区域(可选) plt.fill_between([-1, 1], -1, 1, color='lightblue', alpha=0.3) # 配置图表细节 plt.xlabel('x₁') plt.ylabel('x₂') plt.title('max(|x₁|, |x₂|) ≤ 1') plt.gca().set_aspect('equal', adjustable='box') # 保证正方形比例不失真 plt.grid(True) plt.show()
方法2:用等高线函数绘制区域
适合扩展到更复杂的隐函数场景:
import matplotlib.pyplot as plt import numpy as np # 生成网格数据 x = np.linspace(-1.5, 1.5, 100) y = np.linspace(-1.5, 1.5, 100) X, Y = np.meshgrid(x, y) # 定义函数:max(|x|, |y|) Z = np.maximum(np.abs(X), np.abs(Y)) plt.figure() # 填充Z≤1的区域 plt.contourf(X, Y, Z, levels=[0, 1], colors='lightblue', alpha=0.3) # 绘制边界线 plt.contour(X, Y, Z, levels=[1], colors='black') # 配置图表 plt.xlabel('x₁') plt.ylabel('x₂') plt.title('max(|x₁|, |x₂|) ≤ 1') plt.gca().set_aspect('equal', adjustable='box') plt.grid(True) plt.show()
方法3:用几何补丁快速绘制
利用Matplotlib的补丁模块直接创建正方形:
import matplotlib.pyplot as plt from matplotlib.patches import Rectangle fig, ax = plt.subplots() # 创建正方形:左下角坐标(-1,-1),宽度2,高度2 square = Rectangle((-1, -1), 2, 2, edgecolor='black', facecolor='lightblue', alpha=0.3) ax.add_patch(square) # 配置坐标轴 ax.set_xlim(-1.5, 1.5) ax.set_ylim(-1.5, 1.5) ax.set_aspect('equal', adjustable='box') ax.set_xlabel('x₁') ax.set_ylabel('x₂') ax.set_title('max(|x₁|, |x₂|) ≤ 1') ax.grid(True) plt.show()
内容的提问来源于stack exchange,提问作者Krischen
相关产品推荐
相关产品推荐

