[Python] Can I make a multi-color line in matplotlib?

Discussão em 'Python' iniciado por Stack, Abril 23, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to create a colored line with certain conditions. Basically I would like to have the line colored red when pointing down on the y axis, green when pointing up and blue when neither.

    I played around with some similar examples I found but I have never been able to convert them to work with plot() on an axis. Just wondering how this could be done.

    Here is some code that I have come up with so far:

    #create x,y coordinates
    x = numpy.random.choice(10,10)
    y = numpy.random.choice(10,10)

    #create an array of colors based on direction of line (0=r, 1=g, 2=b)
    colors = []
    #create an array that is one position away from original
    #to determine direction of line
    yCopy = list(y[1:])
    for y1,y2 in zip(y,yCopy):
    if y1 > y2:
    colors.append(0)
    elif y1 < y2:
    colors.append(1)
    else:
    colors.append(2)
    #add tenth spot to array as loop only does nine
    colors.append(2)

    #create a numpy array of colors
    categories = numpy.array(colors)

    #create a color map with the three colors
    colormap = numpy.array([matplotlib.colors.colorConverter.to_rgb('r'),matplotlib.colors.colorConverter.to_rgb('g'),matplotlib.colors.colorConverter.to_rgb('b')])

    #plot line
    matplotlib.axes.plot(x,y,color=colormap[categories])


    Not sure how to get plot() to accept an array of colors. I always get an error about the format type used as the color. Tried heximal, decimal, string and float. Works perfect with scatter().

    Continue reading...

Compartilhe esta Página