【问题标题】:Interpolation between two values using python使用python在两个值之间进行插值
【发布时间】:2019-03-08 14:05:35
【问题描述】:

我正在尝试在 Python 中从具有坐标值(x1,y1)和(x2,y2)的图形中执行线性插值。根据我的价值观,我会在图中得到一条直线as in this figure

我的目标是 10^6(x 轴值)应该给我 y 轴上的参数值,但目前我得到的外推值不在线上。 p>

所需输出: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()

【问题讨论】:

  • 您正在对数空间中绘制一条直线。您确定要插入该图形线吗?还是要插入实际数据?
  • 我想插入那条图形线
  • 在 10^6 值我想插入图形线并找到 x 值。

标签: numpy matplotlib python-3.6 interpolation


【解决方案1】:

请注意,图表中绘制的线与数据完全无关,因为它是图表中的一条线,而不是数据坐标中的一条线。该线的插值因此具有零意义!

如果您仍想插入该行,您首先需要转换为 logspace:

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()

【讨论】:

  • 太棒了!我明白其中的逻辑。非常感谢
猜你喜欢
  • 2018-06-27
  • 1970-01-01
  • 2018-07-26
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多