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

如何在Python中绘制该分段函数(Piecewise function)?

在Python中绘制分段函数

根据你提供的分段函数图像,该函数定义为:

当 ( x < 0 ) 时,( f(x) = x + 1 )
当 ( 0 \leq x \leq 1 ) 时,( f(x) = 1 )
当 ( x > 1 ) 时,( f(x) = -x + 2 )

下面用Python的numpy和matplotlib库来实现绘制,提供两种常用方法:

方法一:用numpy条件判断快速生成数据

这种方法适合结构简单的分段函数,一行代码就能完成y值计算:

首先确保安装了依赖库:

pip install numpy matplotlib

然后编写代码:

import numpy as np
import matplotlib.pyplot as plt

# 生成覆盖函数定义域的x值,这里取-2到3,1000个点保证曲线平滑
x = np.linspace(-2, 3, 1000)

# 用np.where嵌套实现分段逻辑
y = np.where(x < 0, x + 1,
             np.where(x <= 1, 1,
                      -x + 2))

# 绘制曲线
plt.plot(x, y, linewidth=2, color='#1f77b4')

# 美化图像:添加坐标轴、网格和标注
plt.axhline(y=0, color='black', linewidth=0.5, linestyle='--')
plt.axvline(x=0, color='black', linewidth=0.5, linestyle='--')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title('分段函数图像')
plt.grid(True, alpha=0.3)

# 显示图像
plt.show()

方法二:拆分区间分别绘制

如果分段函数逻辑复杂,这种拆分区间的方式更清晰,能单独控制每个分段的样式:

import numpy as np
import matplotlib.pyplot as plt

# 定义各个区间的x取值(注意端点处理,避免重复或遗漏)
x_left = np.linspace(-2, 0, 500, endpoint=False)  # x<0的区间,不包含0
x_mid = np.linspace(0, 1, 500)  # 0≤x≤1的区间
x_right = np.linspace(1, 3, 500, endpoint=False)  # x>1的区间,不包含1

# 计算对应区间的y值
y_left = x_left + 1
y_mid = np.full_like(x_mid, 1)  # 生成和x_mid长度相同的全1数组
y_right = -x_right + 2

# 分别绘制各段曲线
plt.plot(x_left, y_left, linewidth=2, color='#ff7f0e')
plt.plot(x_mid, y_mid, linewidth=2, color='#ff7f0e')
plt.plot(x_right, y_right, linewidth=2, color='#ff7f0e')

# 标记分段点(可选,让关键位置更明显)
plt.scatter([0, 1], [1, 1], color='red', zorder=5)

# 图像美化
plt.axhline(y=0, color='black', linewidth=0.5, linestyle='--')
plt.axvline(x=0, color='black', linewidth=0.5, linestyle='--')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title('分段函数图像')
plt.grid(True, alpha=0.3)

plt.show()

注意事项

  • 生成x值时用足够多的点(比如500或1000个),可以让曲线更平滑,避免出现锯齿感。
  • 处理分段端点时,用endpoint=False可以避免重复绘制同一个点,保证图像准确。
  • 可以根据需求调整曲线颜色、线宽、网格样式等,让图像更符合你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:40:46