绘制我的d有困难吗

2024-09-19 20:53:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我非常绝望。我试图绘制数据时遇到了问题。 第一个圆图很完美,但第二个圆图有问题。当试图用下面的代码绘制它时,我没有得到任何错误消息,但计算从未进入elif循环-它应该考虑到门槛值低于20000,x值上升到95000。它使用if循环继续计算y值。我尽我所能修复它,但要么我创建新的错误消息,要么我一直有相同的问题

有人知道如何修复代码或问题所在吗?我非常感谢你的回答

import matplotlib.pyplot as plt
import numpy as np
b = 1.748
sill = 19506.208
x = np.linspace(0,95000,1000)
if (x < b).any():
    y = np.multiply(sill,( np.multiply(1.5,(x/b)) - 
    (np.multiply(0.5,((x/b)**3.0)))))
elif (x > b).any():
    y = sill
plt.plot(Abstandsmatrix_Tage, Varianzmatrix_Tage, 'ro')
plt.plot(x,y)
plt.show()

Tags: 代码import消息ifplotas错误np
1条回答
网友
1楼 · 发布于 2024-09-19 20:53:57

在分配y值时,需要迭代x。或者在列表中执行:

import matplotlib.pyplot as plt
import numpy as np
b = 1.748
sill = 19506.208
x = np.linspace(0,95000,1000)

y = [np.multiply(sill,( np.multiply(1.5,(i/b)) - (np.multiply(0.5,((i/b)**3.0))))) if i < b else sill for i in x]

plt.plot(x,y)
plt.show()

但是,在您的示例中,只有x的第一个值小于b,即0,因此您最终得到:

y = [0.0, 19506.208, 19506.208, 19506.208, ... ]

那么,也许你的意思是if x < sill,而不是if x < b?如果是:

y = [np.multiply(sill,( np.multiply(1.5,(i/b)) - (np.multiply(0.5,((i/b)**3.0))))) if i < sill else sill for i in x]

相关问题 更多 >