如何绘制显示离散步骤而不是 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,就像第一张图片中的那样?如果还有其他有效的好方法来完成此任务,请分享。
参考文献:
- 有关素数计数功能的更多信息,请参阅 here。
Matplotlib 实现了阶跃函数。
只需将 plot
替换为 step
:
plt.step(t1, ar)
请注意,您可以通过 kwarg where
及其值 {'pre', 'post', 'mid'}
来控制步进的上升位置
我想使用 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,就像第一张图片中的那样?如果还有其他有效的好方法来完成此任务,请分享。
参考文献:
- 有关素数计数功能的更多信息,请参阅 here。
Matplotlib 实现了阶跃函数。
只需将 plot
替换为 step
:
plt.step(t1, ar)
请注意,您可以通过 kwarg where
及其值 {'pre', 'post', 'mid'}