Python Matplotlib基于x轴上的值使用多种颜色打印

Python Matplotlib基于x轴上的值使用多种颜色打印,python,matplotlib,Python,Matplotlib,我想得到一个类似于下面的图,它根据x轴的值具有不同的颜色。忽略u和f字母以及蓝色曲线和灰色线。我只需要绿线和红线。所以,如果你使用我的代码,你会得到一个全是一种颜色的绘图。我想要的是当x在0和转折点之间时有不同的颜色(在本例中,它是x=50%),然后对其余部分有不同的颜色 代码: import matplotlib.pyplot as plt def GRLC(values): n = len(values) assert(n > 0), 'Empty list of

我想得到一个类似于下面的图,它根据x轴的值具有不同的颜色。忽略u和f字母以及蓝色曲线和灰色线。我只需要绿线和红线。所以,如果你使用我的代码,你会得到一个全是一种颜色的绘图。我想要的是当x在0和转折点之间时有不同的颜色(在本例中,它是
x=50%
),然后对其余部分有不同的颜色

代码:

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(['Reg-ALSRank@10','Equity-Line'], loc='upper left',prop={'size':16})
plt.xlabel('% of items ')
plt.ylabel('% of times being recommended')
plt.show()

这是如何绘制两条不同颜色的线,知道数组中颜色应更改的索引

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,49, num=50)
y = x**2

x0 = 23

plt.plot(x[:x0+1], y[:x0+1])
plt.plot(x[x0:], y[x0:])
plt.show()

这是因为默认情况下,后续的线图具有不同的颜色,但您当然可以自己设置颜色

plt.plot(x[:x0+1], y[:x0+1], color="cornflowerblue")

你必须画两条线。在这种情况下是两条线,但是如果它是一条曲线,在不同的间隔应该是不同的颜色呢。老实说,我不认为画多条线是解决问题的办法。老实说,画两条线(每种颜色一条线)是解决问题的办法。我现在很难理解你想在哪个点改变颜色。你在脚本中的某个地方确定了这一点吗?没有,这一点是曲线转弯时的点,在调用GRLC函数之前不清楚该点是什么。但请务必想象一下,你知道该点在哪里。这有什么帮助?