Чтобы ответить на ваш вопрос из комментариев:
Можно ли привязать только одну точку на одной оси и нарисовать опорную линию на обеих осях
Вы бынужна ваша линия Parento в функциональной форме, т.е. Объем продаж = f (Продукт) .Один из способов решить эту проблему f - использовать интерполяцию:
from scipy import interpolate
f = interpolate.interp1d(parento['Cum_Product%'], parento['Cum_Sales%'])
, поэтому теперь f(10)
должно вернуть 80
.Мы можем включить это в функцию ImportanceOfBeingErnests:
def refline(x, f, **kwargs):
y = f(x)
plt.plot([x, x, 0], [0, y, y], **kwargs)
Пример:
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate
X = np.array([1,2,4,6,12,20,28,40])
Y = np.log(X)
f = interpolate.interp1d(X,Y)
# You don't even have to pass f in depending on how general you need it to be
def refline(x, **kwargs):
y = f(x)
plt.plot([x, x, 0], [0, y, y], **kwargs)
plt.plot(X,Y,linewidth=3.0)
refline(10, color="k", lw=1, dashes=[2, 2])
plt.show()
Даже если 10
wasn 't в моем исходном X
, поскольку мы интерполируем, вы все равно можете нарисовать опорную линию в правильной точке вашей линии.