我非常绝望。我在尝试绘制数据时遇到了问题。
第一个圆圈图很完美,但我遇到了第二个圆plt.plot(x, y)
的问题。当尝试使用下面的代码绘制它时,我没有得到任何错误消息,但计算永远不会进入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()
答案 0 :(得分:0)
在分配x
值时,您需要迭代y
。或者在列表理解中做到:
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]