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

osh3o9ms  于 2023-04-06  发布在  其他
关注(0)|答案(2)|浏览(148)

下面是我在python中用来绘制ceiling函数图的代码。

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来考虑两个整数之间的浮点值,但尽管不能画出正确的图形,它是断开的,并且在图形中显示跳跃,就像我们在数学中画的一样。

nkkqxpd9

nkkqxpd91#

我想这就是你想要的:

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()

zf2sa74q

zf2sa74q2#

如果你看y,你会发现它只是数字,1.0等等,plot.plt(x,y)显示了一个连续的阶梯图。它们示出了y1.02.0的变化,其中在x中有一小步。
查看x的每100个值。

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.])

我们可以在每次跳转时将y更改为np.nan

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

然后,plt(x,y)将跳过nan值,只显示没有接近垂直的踢面的平面。

红色虚线表示已连接的y,蓝色虚线表示未连接的nan值。
另一个答案为每个级别做一个单独的plot
有评论建议stair,但我还没有制定出调用细节。
在任何情况下,获取断开连接的绘图都需要对绘图进行特殊处理。仅仅创建x,y数组是不够的。

相关问题