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

Matplotlib绘制函数异常:仅显示蓝色水平线问题排查

问题原因与解决方法

核心问题

你代码里的plt.plot(f_x, ...)只传入了函数值f_x作为y轴数据,没传对应的x轴数据。Matplotlib会默认用0,1,2,...,99作为x轴坐标,再加上你设置了plt.xlim(-10,10),最终只显示了x轴0到10的部分——这部分对应的原x值远小于5,函数值趋近于1,所以看起来是一条水平线。

修正步骤

  1. 传入x轴数据:把plt.plot(f_x, ...)改为plt.plot(x, f_x, ...),让x轴对应你定义的自变量范围。
  2. 优化x取值(可选):原函数在x=5处有垂直渐近线,直接用包含x=5的linspace会导致函数值突变,图形出现不必要的竖线。可以把x分成两部分,避开x=5附近的区间。

修正后的完整代码

import matplotlib.pyplot as plt
import numpy as np

# 拆分x范围,避开渐近线x=5
x1 = np.linspace(-100, 4.9, 100)
x2 = np.linspace(5.1, 100, 100)
f_x1 = (x1 + 3)/(x1 - 5)
f_x2 = (x2 + 3)/(x2 - 5)

plt.axhline(y=0, color="black")
plt.axhline(y=1.0, color="black", linestyle="--")
plt.axvline(x=5, color="grey", linestyle="--")
plt.axvline(color="black")
# 分别绘制两部分曲线
plt.plot(x1, f_x1, linewidth=2, label=r"$f(x) = \frac{x+3}{x-5}$")
plt.plot(x2, f_x2, linewidth=2, color="blue")
plt.xlabel("x")
plt.ylabel("y")
plt.ylim(-10,10)
plt.xlim(-10,10)
plt.legend(fontsize=14)
plt.show()

说明

  • 传入x轴数据后,图形会正确对应自变量x的取值和函数值y的关系。
  • 拆分x范围避开x=5,能避免因函数值突变导致的异常线条,让渐近线效果更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:05:07