-2

X = [22, 33 , 55 , 66 , 77 ,55, 66, 77, 44, 66, 33] Y = [2, 6 , 9 , 9 , 10 ,5, 32, 19, 123, 46, 93]

list = [0, 1, 2, 3 ,4, 0, 5, 6 , 7 ,0 , 8 , 9 ,10,0]

x and y are the cordinates list represent an algorithm output sequence

using list I need to plot different colour, in this example: 1, 2, 3 ,4 -- ColorA 5, 6 , 7 -- ColorB 8 , 9 ,10 -- ColorC or a line link the paths : 0,1, 2, 3 ,4,0 -- lineA 0, 5, 6 , 7 ,0 -- lineB 0, 8 , 9 ,10, 0 -- lineC

I tried this code

Xsolution = []
Ysolution = []

for i in range(len(list)): 
    Xsolution.append(X[list[i]])
    Ysolution.append(Y[list[i]])
    if list[i] == 0 :
         plt.scatter(Xsolution, Ysolution, color=random_color())
         Xsolution = []
         Ysolution = []

I need a function that generate a random colour every time list[i] is 0

1 Answers1

0
import matplotlib.pyplot as plt
from random import randint
import numpy as np

Xsolution = []
Ysolution = []

alist = #list of values

for i in range(len(alist)): 
    Xsolution.append(X[alist[i]])
    Ysolution.append(Y[alist[i]])

labels = range(1,len(alist)+1)
i = 0
fig = plt.figure()
ax = fig.add_subplot(111)
for x,y in zip(Xsolution,Ysolution):
    ax.scatter(x,y,label=labels[i])
    if # reached the zero element
        i = i + 1 #change the label

#Now this is actually the code that you need, an easy fix to cut and paste.
colormap = plt.cm.gist_ncar #nipy_spectral, Set1,Paired  
colorst = [colormap(i) for i in np.linspace(0, 0.9,len(ax.collections))]       
for t,j1 in enumerate(ax.collections):
     j1.set_color(colorst[t])


plt.show()

I TOOK THIS FROM THE WEB AND FIXED IT TO WHAT I NEED THX