如何绘制阶梯函数?
这应该很简单,但我刚开始玩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.stairs
和 StepPatch
的使用方法。
什么时候使用 plt.step
和 plt.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.stairs
与 np.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)
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-mid
和 steps-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()