2016-12-12 2 views
1

Je trace le résultat d'un mélange gaussien quand j'ai 3 types de points qui sont déterminés par une prédiction. J'ai une couleur différente pour chaque grappe prédite et maintenant je voudrais avoir un marqueur différent au lieu de la couleur.Marqueur conditionnel matplotlib

colors=['pink' if i==0 else 'skyblue' if i==1 else 'lightgreen' for i in resultGM] 
markers=['c' if i==0 else 'o' if i==1 else 'D' for i in resultGM] 
ax=plt.gca() 
ax.scatter(datas[:,0], datas[:,1], alpha=0.8, c=colors,marker=markers) 
plt.title("Calling "+name_snp) 
plt.xlabel('LogRatio') 
plt.ylabel('Strength') 
plt.show() 

Il fonctionne parfaitement pour les couleurs comme ceci: enter image description here

Mais je ne peux pas faire la même chose avec des marqueurs différents, il ne reconnaît pas une liste de marqueurs. Comment puis-je avoir un marqueur différent pour chaque groupe (0,1,2) comme je l'ai avec les couleurs?

+1

Vous devez boucle à travers eux. Voir ici http://stackoverflow.com/questions/41078331/matplotlib-read-marker-direction-from-a-file/41078504#41078504 –

Répondre

2

Modifier la ligne avec plt.scatter dans à ce lieu:

for x, y, c, m in zip(datas[:,0], datas[:,1], colors, markers) 
    ax.scatter(x, y, alpha=0.8, c=c,marker=m)