使用 python 在两个值之间进行插值
Interpolation between two values using python
我正在尝试从坐标值为 (x1,y1) 和 (x2,y2) 的图表中在 Python 中执行线性插值。根据我的价值观,我会在图中得到一条直线 as in this figure
我的目标是 10^6(x 轴值) 应该给我 y 轴上的参数值,但目前我得到的外推值不在这条线。
要求输出:OUtput needed
我尝试使用以下代码
import matplotlib.pyplot as plt
import math
import numpy as np
x = np.array([1, 10000000])
y = np.array([0.65, 0.25])
BK = np.asarray(np.interp(0.7,x,y))
print("aa:",BK)
plt.xscale("log")
plt.plot(x,y)
plt.plot(1000000,BK, marker="o",markersize=10)
plt.plot([1000000,1000000,0],[0,BK,BK], "b--", linewidth=1)
plt.xlim(1, 100000000)
plt.ylim(0, 1)
plt.show()
请注意,图表中绘制的线与数据完全无关,因为它是图表中的线,而不是数据坐标中的线。因此,该行的插值具有零意义!
如果您仍想插入该行,您首先需要转换为对数空间:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 10000000])
y = np.array([0.65, 0.25])
xinp = 1e6
BK = np.asarray(np.interp(np.log(xinp), np.log(x), y))
print("aa:",BK)
plt.xscale("log")
plt.plot(x,y)
plt.plot(xinp, BK, marker="o",markersize=10)
plt.plot([1000000,1000000,0],[0,BK,BK], "b--", linewidth=1)
plt.xlim(1, 100000000)
plt.ylim(0, 1)
plt.show()
我正在尝试从坐标值为 (x1,y1) 和 (x2,y2) 的图表中在 Python 中执行线性插值。根据我的价值观,我会在图中得到一条直线 as in this figure
我的目标是 10^6(x 轴值) 应该给我 y 轴上的参数值,但目前我得到的外推值不在这条线。
要求输出:OUtput needed
我尝试使用以下代码
import matplotlib.pyplot as plt
import math
import numpy as np
x = np.array([1, 10000000])
y = np.array([0.65, 0.25])
BK = np.asarray(np.interp(0.7,x,y))
print("aa:",BK)
plt.xscale("log")
plt.plot(x,y)
plt.plot(1000000,BK, marker="o",markersize=10)
plt.plot([1000000,1000000,0],[0,BK,BK], "b--", linewidth=1)
plt.xlim(1, 100000000)
plt.ylim(0, 1)
plt.show()
请注意,图表中绘制的线与数据完全无关,因为它是图表中的线,而不是数据坐标中的线。因此,该行的插值具有零意义!
如果您仍想插入该行,您首先需要转换为对数空间:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 10000000])
y = np.array([0.65, 0.25])
xinp = 1e6
BK = np.asarray(np.interp(np.log(xinp), np.log(x), y))
print("aa:",BK)
plt.xscale("log")
plt.plot(x,y)
plt.plot(xinp, BK, marker="o",markersize=10)
plt.plot([1000000,1000000,0],[0,BK,BK], "b--", linewidth=1)
plt.xlim(1, 100000000)
plt.ylim(0, 1)
plt.show()