Abondance naturelle de quelques isotopes

Où l’on exploite un module Python dédié au éléments chimiques

Le module mendeleev fournit de nombreuses données sur les éléments chimiques.

Après avoir cherché longtemps des jeux de données sur les éléments, je suis finalement tombé sur ce module qui permet de rédiger un code se dispensant de fichier secondaire. De plus, sa documentation est claire, et disponible à la fois en ligne et en PDF à télécharger.

À noter qu’il existe également le module periodictable. Si vous recherchez des données atomiques bien précises, l’un ou l’autre de ces modules devrait vous convenir.


Voici ce que je propose ici :

Pour les 36 premiers éléments chimiques, on visualise l’abondance naturelle des principaux isotopes.

Chaque isotope est représenté par un point, surmonté de la valeur de son nombre de masse. Les radio-isotopes sont d’une couleur différente. En téléchargeant ce code Python, vous pourrez très facilement modifier quelques paramètres à votre convenance, notamment les valeurs limites de numéro atomique et de pourcentage d’abondance naturelle.

Étant donné la large gamme de valeurs possibles pour l’abondance naturelle, j’ai étiré l’échelle des abscisses en choisissant un axe semi-logarithmique. Pour la même raison, j’ai limité aux pourcentages supérieurs à 1 %.

Pour les réglages du graphiques (axes, graduations), ce code est l’occasion de mettre en oeuvre quelques ajustements intéressants du module matplotlib :

  • inversion de l’axe des ordonnées (Z croissant vers le bas)
  • graduation avec des chaînes de caractères (symboles des éléments)
  • doublement de l’axe, pour afficher les numéros atomiques à droite
  • ajouts de graduations supplémentaires
# Paramètres du graphique--------------------------
fig=plt.figure(figsize=(21/2.54,29.7/2.54),tight_layout=True,facecolor='#daf7e2')
ax=plt.subplot(111)
plt.rcParams["font.family"] = "Roboto"# ou autre police installée
plt.title("Abondance naturelle de quelques isotopes",fontsize=16)

 # Axe x------------------
ax.set_xscale('log')
ax.set_xlim(xmin,105)
extraticks=[1.5,15]+list(range(2,10))+list(range(20,100,10))
plt.xticks([1,10]+extraticks,[1,10]+extraticks)
plt.xlabel('Abondance naturelle (%)')

 # Axe y------------------
ax.invert_yaxis()#axeY croissant vers le bas
ax.set_ylim(Zmax+1,0)
plt.yticks(range(1,Zmax+1),symboles)#étiquettes des numéros atomiques
ax2=ax.twinx()# axe y supplémentaire à droite (numéro atomique)
ax2.invert_yaxis()
ax2.set_ylim(Zmax+1,0)
plt.yticks(list(range(1,Zmax+1)))
ax2.set_ylabel("Z",loc='top',rotation=0)

Une variante qui affiche les abondances naturelles sous forme de tableau :

Code python compressé :

Soyez le premier à commenter

Laisser un commentaire