我正在同一条曲线上绘制两幅图。代码是这样的:
x = np.array([86,14,19,24,30,55,41,46])
y1 = np.array([96,86,82,78,80,101,161,32])
y2 = np.array([54,54,48,54,57,76,81,12])
y4 = np.concatenate([y2.reshape(8,1),y1.reshape(8,1)],1)
plot(x,y4)
我需要除x
数组以外的某些点的值。例如:
对于值30,50和78。
有一个选项可以使用“屏幕阅读器”从Origin中的图形中读取数据(即当我指向图表时,我得到了值。)。
python中有等价的吗?
.plot是matplotlib.plot
答案 0 :(得分:0)
这是一个简单的方法,但我要突出其中的局限性。它很棒,因为它不需要复杂的分析,但如果数据稀疏,或者与线性行为有很大差异,那么它就是一个很差的近似值。
>>> import matplotlib.pyplot as plt
>>> plt.figure()
<matplotlib.figure.Figure object at 0x7f643a794610>
>>> import numpy as np
>>> bins = np.array(range(10))
>>> quad = bins**2
>>> lin = 7*bins-12
>>> plt.plot(bins, quad, color="blue")
[<matplotlib.lines.Line2D object at 0x7f643298e710>]
>>> plt.plot(bins, lin, color="red")
[<matplotlib.lines.Line2D object at 0x7f64421f2310>]
>>> plt.show()
这里我展示了一个二次函数[f(x)= x ^ 2]的图,然后是(3,9)和(4,16)点之间的线性拟合。
我可以通过获得斜率来轻松估算:
m = (y2-y1)/(x2-x1) = (16-9)/(4-3) = 7
然后我可以找到某个点的线性函数,我会做(3,3):
f(x) = 7x + b
9 = 7(3) + b
b = -12
f(x) = 7x - 12
现在我们可以估算出3到4之间的任何值。
错误将很快无法使用,但是,在紧密的数据点内,它非常准确。例如:
# quadratic
f(3.5) = 3.5**2 = 12.25
# linear
f(3.5) = 7*3.5 - 12 = 12.5
由于误差只是(实验 - 理论)/(理论),我们得到(12.25-12.5)/(12.5),或者误差为-2%(不是坏)。
但是,如果我们尝试f(50),我们就会得到。
# quadratic
f(50) = 2500
# linear
f(50) = 7*50 - 12 = 338
或错误为639%。