无法绘制我的数据

时间:2015-08-03 14:53:03

标签: python matplotlib

我非常绝望。我在尝试绘制数据时遇到了问题。 第一个圆圈图很完美,但我遇到了第二个圆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()

1 个答案:

答案 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]