【发布时间】:2018-05-12 21:58:44
【问题描述】:
当我只有一个已知的 Y 坐标方程,即 P = a * b(其中 a 和 b 的定义值为 0.8,150)且 x 坐标完全未知时,如何在曲线图上得到一个点,并且没有连接 x 和 y 的方程(例如:y = mx +b; # 我没有这种方程)。所以,现在的目标是假设我的“Y 坐标”值为 120,并且需要通过从未知的“x 坐标”值获取距离或路径来在曲线上绘制一个点。
我尝试了如下代码
One sample figure about how I should plot
import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import InterpolatedUnivariateSpline
# given values
y = np.array([0, 38.39, 71.41, 99.66, 123.67, 143.88, 160.61, 174.03, 184.16, 190.8, 193.52])
x = np.array([0, 0.37, 0.74, 1.11, 1.48, 1.85, 2.22, 2.59, 2.96, 3.33, 3.7])
x_val = np.linspace(0,7) #limts on x-axis
a = 0.8
b = 150
y_val = np.multiply(a, b)
yinterp = np.interp(x_val, x, y)
plt.plot(x, y, '-')
plt.plot(x_val, yinterp, 'o')
#here i need to plot a exact point w.r.t to y_val
#and also need to show the distance with a line from the selected x and y coordinates
plt.plot(x_val,y_val, '--')
plt.show()
【问题讨论】:
-
我不太确定你想要达到什么目的,但你可能需要使用类似
np.interp(y_val, y, x)的东西。 -
@kazemakase 感谢您的回复,我的目标是当我知道 y 截距(0,120)但我不知道 x 截距值时在曲线上绘制一个点。现在我需要使用 y 截距找到 x 截距点。您还可以看到附加的图像。
-
我不知道什么是截距(在这种情况下),但我上面评论中的代码返回对应于
y_val的插值 x,这似乎是你所追求的。 . -
是的,您在评论中编写的代码正在运行,但我的目标是仅在曲线 w.r.t 上获得一个点。 Y 值,在我的情况下,y 截距值被视为(0,y_val)。我只需要使用 y_value 在 x 轴上绘制一个点
标签: python numpy matplotlib scipy