2015-08-03 1 views
0

Je voudrais tracer un ensemble de barres d'erreur avec des couleurs différentes. Aussi différentes couleurs pour mes points de données.Barre d'erreur Matplotlib utilisant une boucle for (pour différentes couleurs)

En ce moment je suis en utilisant:

colours = ['r','b','g','k','m'] 
labels = ['200Mpc','300Mpc','340Mpc','400Mpc','450Mpc'] 

fig2 = plt.figure(figsize=(7,5)) 
ax3 = fig2.add_subplot(111) 
for a,b,c,d,e,f in zip(r0_array,gamma_array,r0_error,gamma_error,colours,labels): 
    ax3.scatter(r0_array,gamma_array,c=e,label=f) 
    ax3.errorbar(r0_array,gamma_array,xerr=c,yerr=d,fmt='o',color=e) 
ax3.set_xlabel('$r_{0}$',fontsize=14) 
ax3.set_ylabel(r'$\gamma$',fontsize=14) 
ax3.legend(loc='best') 
fig2.show() 

qui se traduit par un chiffre avec les errorbars et les couleurs étant overplotted.

enter image description here

Je peux voir que la boucle for est en cours d'exécution 5 fois de plus, comme je peux voir toutes les couleurs, mais je ne vois pas pourquoi cela se passe!

Répondre

0

J'ai compris l'erreur très stupide que je faisais !!

Après la boucle for, chaque valeur, à savoir a, b, c, d, e, f prend des valeurs dans les tableaux r0_array, gamma_array etc ..

Au lieu d'appeler a,b,c, et d dans scatter, je J'appelle le tableau entier r0_array, gamma_array,etc.. chaque fois.

for a,b,c,d,e,f in zip(r0_array,gamma_array,r0_error,gamma_error,colours,labels): 
     ax3.scatter(a,b,color=e,label=f) 
     ax3.errorbar(a,b,xerr=c,yerr=d,fmt='o') 

a résolu le problème.