Укажите xmax в осевой линии на основе значений x - PullRequest
0 голосов
/ 27 мая 2020

Рассмотрим пример ниже:

pca=[0.7,0.2,0.08,0.02]
cumsum=np.cumsum(pca)
ax = sns.lineplot(x =np.arange(len(pca)),y=cumsum)

x_hline = np.argwhere(cumsum>=0.95)[0] # = 3
#ISSUE: Missing some code here to calculate x_hline correctly#
#
#
#

ax.axhline(y=0.95,xmin=0,xmax=x_hline)

Я хочу нарисовать горизонтальную линию, которая начинается с 0 и заканчивается, когда мы достигли значения x на x_hline. Поскольку xmax - это указанное соотношение ширины рисунка, т.е. между 0 и 1, анализировать x_hline невозможно. Я пытался сделать

x_hline= np.argwhere(cumsum>=0.95)[0] #Assume it is "3"
x_hline= (1-1/x_hline)

, и он работает (в большинстве случаев, хорошо), но это не очень надежно. Есть ли способ получить точное соотношение ширины, где элемент / xtick соответствует отношению ширины (в этом случае, в какой точке отношения отображается третий элемент?)

EDIT : Переписать вопрос

1 Ответ

1 голос
/ 27 мая 2020

Вы можете получить больше контроля таким образом:

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

где x1 = 0, x2 = x_hline, y1 = y2 = 0.95

...