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
La représentation marche bien ... MAIS....
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)
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
Partager