Matplotlib 根据x值在axhline中指定xmax

Matplotlib 根据x值在axhline中指定xmax,matplotlib,seaborn,Matplotlib,Seaborn,考虑下面的例子: pca=[0.7,0.2,0.08,0.02] 累计总和=np.累计总和(pca) ax=sns.lineplot(x=np.arange(len(pca)),y=cumsum) x_hline=np.argwhere(cumsum>=0.95)[0]#=3 #问题:此处缺少一些正确计算x_hline的代码# # # # ax.axhline(y=0.95,xmin=0,xmax=x_hline) 我想画一条水平线,从0开始,到通过x\u hline达到x值为止。由于xmax

考虑下面的例子:

pca=[0.7,0.2,0.08,0.02]
累计总和=np.累计总和(pca)
ax=sns.lineplot(x=np.arange(len(pca)),y=cumsum)
x_hline=np.argwhere(cumsum>=0.95)[0]#=3
#问题:此处缺少一些正确计算x_hline的代码#
#
#
#
ax.axhline(y=0.95,xmin=0,xmax=x_hline)
我想画一条水平线,从0开始,到通过
x\u hline
达到x值为止。由于
xmax
是图形宽度的指定比率,即介于0和1之间,因此无法解析
x\u hline
。我试着去做

x_hline=np.argwhere(cumsum>=0.95)[0]#假设它是“3”
x_hline=(1-1/x_hline)
它是有效的(大多数情况下,好的),但它并不是很健壮。是否有办法获得宽度的精确比率,其中元素/xtick是根据宽度的比率绘制的(在这种情况下,第三个元素在哪个比率点绘制?)

编辑:
重写问题

您可以通过以下方式获得更多控制:

ax.plot((x1, x2), (y1, y2), 'k-',linewidth=4)

其中x1=0,x2=x_hline,y1=y2=0.95

您确实需要
ax.hline
。您可能需要添加一些独立的代码和数据(作为一个连续的代码块,在解释中没有分开)来创建一个最小的可复制示例。我已经尝试重新编写问题,以使其更清楚。好的,您确实需要在数据坐标中工作的
ax.hlines
。使用非常低的左值;过低的所有内容都将被
xlim
切掉。你可以在画线之前调用
x0,x1=ax.get\u xlim()
,然后调用
ax.set\u xlim(x0,x1)
来重置这些限制。啊。。。当然我可能已经在“为它而做的功能”上锁定了太多,我很乐意提供帮助。如果您发现解决方案很有帮助,并且解决了您的问题,则需要检查绿色标记。这将有助于将重点放在未解决的问题上。