Python 如何投影绘图与直线的交点?

Python 如何投影绘图与直线的交点?,python,numpy,matplotlib,Python,Numpy,Matplotlib,我正在寻找一种方法,在x轴上使用垂直不连续线(样式'--')投影图形的交点,然后在该轴上写入x坐标 这是我寻找十字路口的尝试。由于某些原因,该点不完全在交点上。真奇怪 将numpy导入为np 将matplotlib.pyplot作为plt导入 将matplotlib导入为mpl n=256 k=np.arange(01100) g=1-np.exp(-0.5*k*(k-1)/n) plt.绘图(g,'-') plt.hlines(0.5,0100,'r') idx=np.argwhere(np.

我正在寻找一种方法,在x轴上使用垂直不连续线(样式'--')投影图形的交点,然后在该轴上写入x坐标

这是我寻找十字路口的尝试。由于某些原因,该点不完全在交点上。真奇怪

将numpy导入为np
将matplotlib.pyplot作为plt导入
将matplotlib导入为mpl
n=256
k=np.arange(01100)
g=1-np.exp(-0.5*k*(k-1)/n)
plt.绘图(g,'-')
plt.hlines(0.5,0100,'r')
idx=np.argwhere(np.diff(np.sign(g-0.5)))
plt.plot(k[idx],g[idx],'o')
plt.show()

正如tevemadar在评论中提到的,您需要通过求解g=0.5的k来找到交点,即绘制hline的位置

将numpy导入为np
将matplotlib.pyplot作为plt导入
将matplotlib导入为mpl
n=256
k=np.arange(01100)
f=0.5
g=1-np.exp(-0.5*k*(k-1)/n)
plt.绘图(g,'-')
hline_pos=0.5
plt.hlines(hline_pos,0100,'r')
#反向
#np.exp(-0.5*k*(k-1)/n)=1-g
#-0.5*k*(k-1)/n=np.log(1-g)
#k^2-k=np.log(1-g)*(-n/0.5)
求解\u for=hline\u pos
常数=np.log(1-求解)*(-n/0.5)
ks=np.根([1,-1,-常数])
ks=np.sort(ks)#根据域边界进行排序以获得正根
plt.scatter(ks[1],hline_pos)
plt.vlines(ks[1],0,hline_pos,linestyles='--')
plt.show()

你可以从找到交叉点开始,比如,然后考虑画它。我做了,编辑了我的帖子。这看起来很奇怪。对于你的特定方程式,100个数据点的“分辨率”不足以让索引的值正好落在交点上。提供一种使用线性插值查找精确交点的方法。您可以使用链接帖子的功能调用
find_roots(k,g-0,5)
。如果放大,即使相交线似乎指向0.5,此解决方案仍会被破坏:@AKX有办法修复它吗?这只是一个近似解决方案,将很快更新。