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,所以看起来是一条水平线。
修正步骤
- 传入x轴数据:把
plt.plot(f_x, ...)改为plt.plot(x, f_x, ...),让x轴对应你定义的自变量范围。 - 优化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
相关产品推荐
相关产品推荐

