Я хочу получить график, похожий на следующий график, который имеет разные цвета на основе значений для оси x. Игнорируйте буквы u и f, а также синюю кривую и серые линии. Мне нужны только зеленые и красные линии. Итак, если вы используете мой код, вы получите сюжет, который является одним цветом. Я хочу иметь разный цвет, когда x находится между 0 и точкой поворота (в данном случае это x=50%
), а затем другой цвет для остальных.График Matplotlib с несколькими цветами на основе значений по оси x
Код:
import matplotlib.pyplot as plt
def GRLC(values):
n = len(values)
assert(n > 0), 'Empty list of values'
sortedValues = sorted(values) #Sort smallest to largest
#Find cumulative totals
cumm = [0]
for i in range(n):
cumm.append(sum(sortedValues[0:(i + 1)]))
#Calculate Lorenz points
LorenzPoints = [[], []]
sumYs = 0 #Some of all y values
robinHoodIdx = -1 #Robin Hood index max(x_i, y_i)
for i in range(1, n + 2):
x = 100.0 * (i - 1)/n
y = 100.0 * (cumm[i - 1]/float(cumm[n]))
LorenzPoints[0].append(x)
LorenzPoints[1].append(y)
sumYs += y
maxX_Y = x - y
if maxX_Y > robinHoodIdx: robinHoodIdx = maxX_Y
giniIdx = 100 + (100 - 2 * sumYs)/n #Gini index
return [giniIdx, giniIdx/100, robinHoodIdx, LorenzPoints]
reg=[400,200]
result_reg = GRLC(reg)
print 'Gini Index Reg', result_reg[0]
print 'Gini Coefficient Reg', result_reg[1]
print 'Robin Hood Index Reg', result_reg[2]
#Plot
plt.plot(result_reg[3][0], result_reg[3][1], [0, 100], [0, 100], '--')
plt.legend(['[email protected]','Equity-Line'], loc='upper left',prop={'size':16})
plt.xlabel('% of items ')
plt.ylabel('% of times being recommended')
plt.show()
Вы должны построить две линии. – Goyo
В этом случае это две строки, но что, если это кривая, которая должна быть разных цветов для разных интервалов. Я не думаю, что рисование нескольких строк - это решение, если честно. – HimanAB
Честно говоря, рисование 2 строк (по одному для каждого цвета) ** является ** решением. В настоящее время у меня возникают трудности с пониманием того, в какой точке вы хотите изменить цвет. Вы определяете этот пункт в своем скрипте где-то? – ImportanceOfBeingErnest