如何绘制显示离散步骤而不是 python 中样本之间连续变化的函数?

How to plot a function showing discrete steps rather than continuous changes between samples in python?

我想使用 Python 将素数计数函数绘制为 阶跃函数 。我使用 mathematica 完成了此操作,如下图 -

我的python代码

import numpy as np 
import matplotlib.pyplot as plt 
import sympy                        # for evaluating number of primes <= n 

def f(n):
    arr = []
    for i in range(1,n+1):
        arr.append(sympy.primepi(i))
        #print('For',i, 'value', arr[i-1])
    return arr

ar = f(100)

t1 = np.arange(1,101,1,dtype = int)
plt.plot(t1, ar ,'bo')           # instead of 'bo' what I need to use to make it like 1st picture?
plt.axis([0,110,0,25]) 
plt.show()

产生

谁能告诉我如何制作这张图 stepwise,就像第一张图片中的那样?如果还有其他有效的好方法来完成此任务,请分享。

参考文献:

  1. 有关素数计数功能的更多信息,请参阅 here

Matplotlib 实现了阶跃函数。

只需将 plot 替换为 step:

plt.step(t1, ar)

请注意,您可以通过 kwarg where 及其值 {'pre', 'post', 'mid'}

来控制步进的上升位置