Axes non linéaires dans Matplotlib
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:
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