Spectres de raies d’émission (avec intensité) – Python

Où l’on peut comparer les intensités relatives des raies d’émission.

Dans la continuité de ce précédent article, qui traçait les spectres de raies d’émission de quelques éléments, voici une version donnant les intensités relatives des raies.

Il semble que le célèbre doublet jaune-orange du sodium soit dépassé en intensité par un pic dans le proche UV (mais peut-être absent des lampes au sodium, s’il est absorbé par le verre ?)

Rappel : l’outil graphique de matplotlib permet de zoomer facilement sur une zone du graphe ; on peut ainsi “résoudre” le doublet du sodium :

Dans le code écrit ici, les données spectrales sont stockées dans des fichiers .csv obtenus sur le site :

https://physics.nist.gov/PhysRefData/ASD/lines_form.html

avec les réglages suivants :

Dans les fichiers .csv, j’ai retiré quelques caractères parasites (signe égal, guillemets) et simplifié le nom des colonnes “wl” et “Aki”.

Un colormap permet de relier la couleur de la raie à sa longueur d’onde. Le code :

import matplotlib.pyplot as plt
import pandas as pd
#import numpy as np#seulement pour changer les intervalles de graduations

#Extraction des données des fichiers CSV :
donnees=pd.read_csv("../Spectres de raies/Zn.csv", delimiter=',')
spectre=donnees[["wl", "Aki"]]

#-----------------------------------------------------------------------------------------
"""Définition d'une fonction qui trace le spectre d'un élément.
data est le tableau de données de cet élément.
"""
def trace(element, data):
    for N in range(len(data)):
        LO=data["wl"][N]
        Int=data["Aki"][N]
        plt.plot([LO, LO], [0, Int], linewidth=ep, c=cmap((LO-350)/400))
#        plt.plot([LO, LO], [0, Int], linewidth=ep, c='black')#raies en noir
    plt.ylabel("intensité relative")
#    plt.yticks([])#supprime les graduations en y
    plt.xlim(350, 750)#limites de l'axe x
    plt.ylim(0, 1.1*data["Aki"].max())#limites de l'axe y
    #changer les intervalles de longueur d'onde :
# plt.xticks(np.arange(400, 800, 100))#le dernier nombre est l'intervalle
    #changer les intervalles en ordonnées :
#    plt.yticks(np.arange(0, spectre["Aki"].max(), 0.05))#le dernier nombre est l'intervalle

#Paramètres du graphique :----------------------------------
ep=1#épaisseur des raies
couleurDeFond='black'# pour imprimer, mieux vaut 'white'
fig=plt.figure(figsize=(7, 7), tight_layout=True)

plt.suptitle(r"Spectre de raies d'émission du $\mathbf{zinc}$")
cmap=plt.get_cmap('turbo')#gamme de couleurs du visible
#Attention, le colormap 'turbo' n'est pas inclus dans les installations
#matplotlib antérieures à la version 3.3.0

#GRAPHE 1 --------------------------------------------------------------------------
ax1=plt.subplot(111, facecolor=couleurDeFond)

plt.title("Données NIST : https://physics.nist.gov/asd", fontsize=8, loc='right')
plt.xlabel("longueur d'onde (nm)")
trace("H", spectre)
#Création d'un fichier image :
fig.savefig("SpectresRaies2D_Zn.png", dpi=300)

plt.show()

Le fichier compressé :


En multi-graphe :

Version Noir&Blanc pour l’impression :

Le code pour le document multigraphe :

Soyez le premier à commenter

Laisser un commentaire