如何绘制不连续天花板函数?

How can I plot a discontinuous ceiling function?

提问人:avni prajapati 提问时间:4/1/2023 最后编辑:Trenton McKinneyavni prajapati 更新时间:4/2/2023 访问量:94

问:

这是我用来在 python 中绘制天花板函数图的代码。

import math
import numpy as np
import matplotlib.pyplot as plt 
x = np.arange(-5, 5, 0.01)
y = np.ceil(x)
plt.plot(x,y)
plt.xlabel('ceil(x)')
plt.ylabel('graph of ceil (x)')
plt.title('graph of ceil (x)')
plt.show()

我尝试考虑两个整数之间的浮点值,但无法绘制正确的图形,该图形是断开连接的,并且在我们绘制数学时在图形中显示跳跃。np.arange

python numpy matplotlib 地板 ceil

评论

0赞 Mike 'Pomax' Kamermans 4/1/2023
如果您需要不同的绘图类型,请不要调用 plot(),因为 plot() 用于在假设数据是连续函数的情况下绘制数据。你几乎肯定想要.step()
0赞 hpaulj 4/2/2023
y,只是一个 numbrs 数组。它不是一个函数。 只是在所有货币对之间画一条线。从数学函数意义上讲,它不是一个连续的或不连续的函数。pltx,y

答:

0赞 TheEngineerProgrammer 4/2/2023 #1

我想这就是你想要的:

x = np.arange(-5, 5, 0.01)
y = np.ceil(x)

plt.xlabel('ceil(x)')
plt.ylabel('graph of ceil (x)')
plt.title('graph of ceil (x)')

for i in range(int(np.min(y)), int(np.max(y))+1):
    plt.plot(x[(y>i-1) & (y<=i)], y[(y>i-1) & (y<=i)], 'b-')

plt.show()

enter image description here

0赞 hpaulj 4/2/2023 #2

如果你看一下,你会发现它只是数字,等等。 显示连续的阶梯图。放大到足够多,你会发现垂直领域并不完全是这样;它们显示了 from to 的变化,在 中的一小步中。y1.0plot.plt(x,y)y1.02.0x

查看 的每 100 个值。x

In [13]: x[::100]
Out[13]:
array([-5.0000000e+00, -4.0000000e+00, -3.0000000e+00, -2.0000000e+00,
       -1.0000000e+00, -1.0658141e-13,  1.0000000e+00,  2.0000000e+00,
        3.0000000e+00,  4.0000000e+00])

看看这些要点,然后:ceil

In [15]: np.ceil(x[::100])
Out[15]: array([-5., -4., -3., -2., -1., -0.,  1.,  2.,  3.,  4.])
In [16]: np.ceil(x[1::100])
Out[16]: array([-4., -3., -2., -1., -0.,  1.,  2.,  3.,  4.,  5.])

我们可以在每次跳转时更改为 .ynp.nan

In [17]: y[::100]=np.nan

然后将跳过这些值,只显示没有近垂直立管的平坦。plt(x,y)nan

dash continuous, blue with nan

红色破折号表示已连接,蓝色表示已断开连接的值。ynan

另一个答案对每个级别都单独做。plot

一条评论建议,但我还没有弄清楚通话细节。stair

在任何情况下,断开打印都需要对打印进行特殊处理。仅仅创建数组是不够的。x,y