Bonjour,

je souhaiterais représenter un spectre gradué en longueur d'onde (en bas) et en énergie (en haut).
Pour le moment j'ai utilisé une solution trouvée dans la gallery

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
 
def update_ax2(ax1):
   y1_1, y2_1 = ax1.get_xlim()
   y1_2=h*C/y1_1/e*1E9
   y2_2=h*C/y2_1/e*1E9  
   ax2.set_xlim(y1_2, y2_2)
   ax2.figure.canvas.draw()
 
fig=plt.figure('Spectrum',figsize=(15, 8))
ax1=fig.add_subplot(111)
ax2=ax1.twiny()
ax1.callbacks.connect("xlim_changed", update_ax2)
ax1.set_xlim(lambdamin,lambdamax)
 
ax1.plot(X,Y,'r-',label='Spectrum',linewidth=3)
La représentation marche bien ... MAIS....
comme vous pouvez le voir dans le texte il y une correspondance non linéaire entre les échelles: E=h*c/\lambda. Les valeurs des énergies ne sont donc correctes que pour les bornes.

Peut-on avoir un axe linéaire et un axe non linéaire liés ?
(je ne vois dans la doc que des axes log et lin, pas d'axes queconques...)
Merci d'avance pour l'aide,

lippoi