Physique, lisible pour tous
graphisme python loi dohm

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

# données brute
# en colonne ou en une ligne, virgule ou point décimal et espace pour séparer:
courant = ' 1,2 1,15 1,1 1,02 1 0,8 -0.8 -1.2' # en mA, remplacez par vos valeurs!
tension = ' 0.65 0.6 0.5 0.45 0.4 0.35 -0.35 -0.65' # en V, remplacez par vos valeurs!

############################ 
# ceci va remplacer les virgules par des points pour les décimales, au besoin:
courant = courant.replace(',','.')
tension = tension.replace(',','.')

# ceci va transformer les strings en array numpy: 
courant = np.fromstring(courant, dtype=float, sep=' ')
tension = np.fromstring(tension, dtype=float, sep=' ')

# data validation: même nombre de données?
nombres_data = [len(elem) for elem in [courant, tension]]
if len(set(nombres_data)) != 1:
    print('Vérifiez le nombre de données: %s'%nombres_data)
    raise ValueError()

# incertitudes à modifier!
incert_courant_abs = 0.01 + 0.10 * abs(courant) # à substituer par les spec du manufacturier pour UNI-T
incert_tension_abs = 0.02 + 0.15 * abs(tension) # à substituer par les spec du manufacturier pour Amprobe


# figure:
plt.figure(figsize=(5,3))
plt.errorbar(courant, tension, xerr = incert_tension_abs, marker='o', ls='none',
             yerr = incert_courant_abs , ms=3)
plt.grid()
plt.title("Courbe caractéristique IV d'une résistance")
plt.ylabel('Courant(mA)')
plt.xlabel('Tension(V)')
plt.savefig('grapheIV.pdf', bbox_inches='tight') # sauvegardé dans le rep
plt.show()