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

如何在Matplotlib中绘制|x| + |y| = 0.1函数?范围异常求助

解决Matplotlib绘制|x| + |y| = 0.1的问题

用单个函数绘制的方法

这个方程对应一个菱形,完全可以通过单个参数化函数实现绘制,不用分段处理。

直接看代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成覆盖0到2π的参数theta
theta = np.linspace(0, 2*np.pi, 1000)
# 通过参数方程计算所有符合条件的x、y点
x = 0.1 * np.cos(theta) / (np.abs(np.cos(theta)) + np.abs(np.sin(theta)))
y = 0.1 * np.sin(theta) / (np.abs(np.cos(theta)) + np.abs(np.sin(theta)))

plt.plot(x, y)
plt.axis('equal')  # 防止图形被拉伸变形
plt.show()

原理是利用三角函数的周期性和绝对值特性,通过参数theta生成所有满足|x|+|y|=0.1的点,一行plt.plot(x,y)就能完成绘制,属于单个函数调用的范畴。

解决范围超出时显示异常的问题

这个方程的有效定义域和值域本来就是[-0.1, 0.1]——如果x的绝对值大于0.1,|x|已经超过0.1,加上|y|不可能等于0.1;y同理。超出这个范围的区域没有符合方程的点,自然会显示异常。

解决方法很直接:

  1. 手动设置坐标轴范围,匹配函数的有效区域:
    plt.xlim(-0.15, 0.15)
    plt.ylim(-0.15, 0.15)
    
  2. 生成数据时严格限定在有效范围内,避免无效值干扰:
    x = np.linspace(-0.1, 0.1, 1000)
    # 计算上下两条边的y值
    y_upper = 0.1 - np.abs(x)
    y_lower = -(0.1 - np.abs(x))
    # 合并绘制
    plt.plot(x, y_upper, x, y_lower)
    plt.axis('equal')
    plt.show()
    

这种方式也能画出完整图形,且能确保只生成有效数据,从根源避免范围异常问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:01:03