python已知y求x_当使用python知道X坐标值未知时,如何根据Y坐标获取Path的X坐标
當(dāng)我只有一個(gè)已知的Y坐標(biāo)方程,即P = a * b(其中a& b定義的值為0.8,150)和x坐標(biāo)完全未知時(shí),如何在曲線繪圖上得到一個(gè)點(diǎn)沒有連接x和y的方程(例如:y = mx b; #i沒有這種方程).因此,現(xiàn)在目標(biāo)是,如果我將’Y坐標(biāo)’值設(shè)置為120并且需要通過從未知’x-coordiante’值獲取距離或路徑來繪制曲線上的點(diǎn).
我嘗試了如下代碼
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()
解決方法:
你想要的是找到數(shù)組的根(s)或零(s).這個(gè)問題的答案顯示了如何做到這一點(diǎn):How to get values from a graph?
將解決方案應(yīng)用于此案例如下:
import matplotlib.pyplot as plt
import numpy as np
# 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)
plt.plot(x, y, '-')
def find_roots(x,y):
s = np.abs(np.diff(np.sign(y))).astype(bool)
return x[:-1][s] + np.diff(x)[s]/(np.abs(y[1:][s]/y[:-1][s])+1)
a = 0.8
b = 150
y_val = np.multiply(a, b)
roots = find_roots(x, y-y_val)
plt.plot(roots[0],y_val, marker="o")
plt.plot([roots[0],roots[0],0],[0,y_val,y_val], "--")
plt.xlim(0,None)
plt.ylim(0,None)
plt.show()
如果數(shù)組單調(diào)遞增,您當(dāng)然也可以簡單地插值:
import matplotlib.pyplot as plt
import numpy as np
# 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)
plt.plot(x, y, '-')
a = 0.8
b = 150
y_val = np.multiply(a, b)
root = np.interp(y_val,y,x)
plt.plot(root,y_val, marker="o")
plt.plot([root,root,0],[0,y_val,y_val], "--")
plt.xlim(0,None)
plt.ylim(0,None)
plt.show()
標(biāo)簽:python,numpy,scipy,matplotlib
總結(jié)
以上是生活随笔為你收集整理的python已知y求x_当使用python知道X坐标值未知时,如何根据Y坐标获取Path的X坐标的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4、Oracle使用网络管理工具—Net
- 下一篇: websocket python爬虫_p