如何绘制阶梯函数?

44 投票
6 回答
92249 浏览
提问于 2025-04-17 10:35

这应该很简单,但我刚开始玩matplotlib和python。我可以做折线图或散点图,但我不太确定怎么画一个简单的阶梯函数。任何帮助都非常感谢。

x = 1,2,3,4
y = 0.002871972681775004, 0.00514787917410944, 0.00863476098280219, 0.012003316194034325

6 个回答

6

matplotlib 3.4.0的新功能

在这个版本中,新增了一个叫做 plt.stairs 的方法,来补充之前的 plt.step

plt.stairs 和它背后的 StepPatch 提供了一个更简洁的方式来绘制阶梯状的常数函数,特别是当你已经知道阶梯的边缘时。

这个新方法可以替代很多使用 plt.step 的场景,比如在绘制 np.histogram 的输出时。

可以查看官方的 matplotlib 画廊,了解 plt.stairsStepPatch 的使用方法


什么时候使用 plt.stepplt.stairs

  • 如果你有参考点,就用原来的 plt.step。在这里,阶梯是固定在 [1,2,3,4] 的位置,并向左延伸:

    plt.step(x=[1,2,3,4], y=[20,40,60,30])
    
  • 如果你有边缘,就用新的 plt.stairs。之前的 [1,2,3,4] 阶梯点对应于 [1,1,2,3,4] 的阶梯边缘:

    plt.stairs(values=[20,40,60,30], edges=[1,1,2,3,4])
    

plt.step vs plt.stairs


plt.stairsnp.histogram 一起使用

因为 np.histogram 返回的是边缘,所以它可以直接与 plt.stairs 一起使用:

data = np.random.normal(5, 3, 3000)
bins = np.linspace(0, 10, 20)
hist, edges = np.histogram(data, bins)

plt.stairs(hist, edges)

plt.stairs with np.histogram

24

如果你的数据点不是均匀分布的,可以在使用 plot 时,利用 drawstyle 这个参数来调整绘图样式。

x = [1,2.5,3.5,4] 
y = [0.002871972681775004, 0.00514787917410944, 
     0.00863476098280219, 0.012003316194034325]

plt.plot(x, y, drawstyle='steps-pre')

另外,还有 steps-midsteps-post 这两种样式可以选择。

68

看起来你想要使用 step 这个功能。

比如说:

import matplotlib.pyplot as plt

x = [1,2,3,4] 
y = [0.002871972681775004, 0.00514787917410944, 
     0.00863476098280219, 0.012003316194034325]

plt.step(x, y)
plt.show()

在这里输入图片描述

撰写回答