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

如何优化定义域为三角形的二维函数绘图?含等边三角形展示需求

绘制f(x,y)=x²+y²的指定三角形区域并优化显示

针对你要绘制函数f(x,y)=x²+y²(定义域为x≥0、y≥0、x+y≤1)的需求,这里提供两种优化方案:一种是在原坐标系中仅保留目标三角形区域并调整视觉比例为等边;另一种是通过坐标变换将区域映射为标准等边三角形。

方案1:原坐标系下保留目标区域并视觉化为等边三角形

实现代码

import numpy as np
import matplotlib.pyplot as plt

def compute_function(x, y):
    return x**2 + y**2

# 生成x,y网格
x = np.arange(0, 1, 0.01)
y = np.arange(0, 1, 0.01)
X, Y = np.meshgrid(x, y)
Z = compute_function(X, Y)

# 标记并隐藏超出定义域的区域(x+y>1)
mask = X + Y > 1
Z[mask] = np.nan

# 创建绘图对象
fig, ax = plt.subplots()
im = ax.imshow(Z, cmap='RdBu', extent=(0, 1, 0, 1), origin='lower')

# 添加颜色条
plt.colorbar(im)

# 调整纵横比,让直角三角形视觉上等边
# 等边三角形高为√3/2,因此y轴单位长度需对应x轴的√3/2倍,纵横比设为2/√3
ax.set_aspect(2 / np.sqrt(3))

# 标注坐标轴与斜边
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.plot([0, 1], [1, 0], 'k--', label='x+y=1')
ax.legend()

plt.show()

关键细节

  • 隐藏无关区域:通过Z[mask] = np.nan将x+y>1的区域设为无效值,imshow会自动跳过这些区域的渲染,只保留目标三角形。
  • 视觉等边调整:利用ax.set_aspect(2/np.sqrt(3))调整坐标轴比例,让原本的直角三角形在视觉上呈现为等边三角形——等边三角形的高是边长的√3/2倍,这个比例能让y轴的显示长度匹配等边三角形的高度要求。

方案2:坐标变换为标准等边三角形

如果需要将定义域真正映射为等边三角形坐标系(而非仅视觉调整),可以通过坐标变换实现:

实现代码

import numpy as np
import matplotlib.pyplot as plt

def compute_function(x, y):
    return x**2 + y**2

# 生成原坐标系网格
x = np.arange(0, 1, 0.01)
y = np.arange(0, 1, 0.01)
X, Y = np.meshgrid(x, y)

# 坐标变换:将直角三角形映射为等边三角形
# (x,y) → (u,v),其中u = x + y/2,v = (y*√3)/2
U = X + Y / 2
V = (Y * np.sqrt(3)) / 2

# 计算函数值并隐藏超出定义域的区域
Z = compute_function(X, Y)
mask = X + Y > 1
Z[mask] = np.nan

# 使用pcolormesh绘制变换后的区域(适配非规则网格)
fig, ax = plt.subplots()
im = ax.pcolormesh(U, V, Z, cmap='RdBu')

# 添加颜色条
plt.colorbar(im)

# 保持坐标轴等比例,确保等边三角形显示正确
ax.set_aspect('equal')

# 标注坐标轴与三角形顶点
ax.set_xlabel('u')
ax.set_ylabel('v')
ax.scatter([0, 1, 0.5], [0, 0, np.sqrt(3)/2], c='black', s=40, label='Vertices')
ax.legend()

plt.show()

关键细节

  • 坐标变换逻辑:变换公式将原三角形的三个顶点(0,0)、(1,0)、(0,1)映射为(0,0)、(1,0)、(0.5, √3/2),构成标准等边三角形。
  • 绘图选择:使用pcolormesh而非imshow,因为变换后的网格不再是规则矩形,pcolormesh能更好地处理非规则坐标映射的渲染。

内容的提问来源于stack exchange,提问作者Erel Segal-Halevi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:17:25