Bonjour à tous !
J'écris un code pour afficher une régression linéaire, mais un message d'erreur étrange apparait lors de l'affichage d'une courbe alors que les autres s'affichent très bien.
Voici le passage en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# -*- coding: utf-8 -*-
 
#importation des bibliothèques et fonctions nécessaires:
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
from math import pi, cos
 
#déclaration des valeurs experimentales et des incertitudes:
theta=np.array([90,80,70,60,50,40,30,20,10])
for i in range (len(theta)):
    theta[i]=((cos((theta[i]*pi)/180))**2)*15
I_blanc=np.array([0,0,0.4,1.3,2.5,3.8,5.0,6.2,6.9])
err_I=[0.5]*10
err_theta=[0]*10
 
#affichage du coefficient directeur et de l'ordonnée à l'origine
#des régressions linéaires pour les différentes valeurs:
pente_b,ordonnee_b,r_b,p_b,d_b=stats.linregress(theta,I_blanc)
print ("I_blanc :",pente_b,'x+',ordonnee_b)
print ('coefficient de correlation R^2',r_b**2,"\n")
 
def linereg (X,a,b):
    """arguments: un tableau de valeur + un coefficient directeur + une ordonnée a l'origine
    retourne "Y=a.X+b" """
    return (a*X+b)
 
#on presente les 3 courbes l'une sous l'autre:
plt.subplot(3,1,1)
 
X=np.linspace(theta[0],theta[-1],100)
Y_b=linereg(X,pente_b,ordonnee_b)
 
plt.figure(1)
plt.plot(theta,I_blanc,'bo')
plt.plot(X,Y_b,'--',label=r'$Régression linéaire$')
plt.errorbar(theta,I_blanc,err_theta,err_I,fmt=u'+')
plt.xlabel=(r'$cos(theta)^2$')
plt.ylabel=(r'$I_(blanc)$')
plt.legend(loc=4)
plt.grid()
plt.axis([0,15,0,8])
plt.title("sans filtre")
plt.show()
J'ai enlvé une partie qui correspond aux autres valeurs mais le probleme est le meme pour les 3: le code se déroule bien jusqu'a la ligne "plt.plot(X,Y_b,'--',label=r'$Régression linéaire$')" ou un message d'erreur s'affiche dans la console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> plt.plot(X,Y_r,'--',label=r'$Régression linéaire$')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\matplotlib\pyplot.py", line 3099, in plot
    ret = ax.plot(*args, **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\axes\_axes.py", line 1373, in plot
    for line in self._get_lines(*args, **kwargs):
  File "C:\Python27\lib\site-packages\matplotlib\axes\_base.py", line 304, in _grab_next_args
    for seg in self._plot_args(remaining, kwargs):
  File "C:\Python27\lib\site-packages\matplotlib\axes\_base.py", line 292, in _plot_args
    seg = func(x[:, j % ncx], y[:, j % ncy], kw, kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\axes\_base.py", line 244, in _makeline
    self.set_lineprops(seg, **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\axes\_base.py", line 186, in set_lineprops
    func(val)
  File "C:\Python27\lib\site-packages\matplotlib\artist.py", line 777, in set_label
    self._label = '%s' % (s, )
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)
>>>
J'ai d'abord trouvé sur internet qu'il manquait la premiere ligne de mon code ,ie "# -*- coding: utf-8 -*-" je l'ai alors rajoutée mais toujours rien, de meme les lignes plt.xlabel et ylabel ainsi que errorbar et legend ne semblent pas fonctionner.

Auriez-vous une idée des corrections à apporter a mon code ?
Merci d'avance !