52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
|
import utils
|
||
|
import matplotlib.pyplot as plt
|
||
|
|
||
|
from matplotlib.widgets import Slider
|
||
|
|
||
|
def slideshow():
|
||
|
slabs, i_min, i_max = utils.load_slabs()
|
||
|
|
||
|
f, axes = plt.subplots(2, 3, height_ratios=[10, 1])
|
||
|
|
||
|
for ax in axes.flat:
|
||
|
ax.set_axis_off()
|
||
|
|
||
|
ax, axfreq = axes[:,0]
|
||
|
implot = ax.imshow(slabs[0]["data"], vmin=i_min, vmax=i_max)
|
||
|
s = slabs[0]
|
||
|
ax.set_title(f"Energy: {s["e"]}cm-1, total intensity: {s["total"]:.2e}")
|
||
|
f.subplots_adjust(bottom=0.25)
|
||
|
|
||
|
# Make a horizontal slider to control the frequency.
|
||
|
freq_slider = Slider(
|
||
|
ax=axfreq,
|
||
|
label='Slab',
|
||
|
valmin=0,
|
||
|
valstep=1,
|
||
|
valmax=len(slabs)-1,
|
||
|
valinit=0,
|
||
|
)
|
||
|
|
||
|
# The function to be called anytime a slider's value changes
|
||
|
def update(val):
|
||
|
s = slabs[val]
|
||
|
implot.set_data(s["data"])
|
||
|
ax.set_title(f"Energy: {s["e"]}cm-1, total intensity: {s["total"]:.2e}")
|
||
|
f.canvas.draw_idle()
|
||
|
|
||
|
freq_slider.on_changed(update)
|
||
|
|
||
|
ax_ch2, _ = axes[:,1]
|
||
|
ax_ch2.imshow(slabs[5]["data"], vmin=i_min, vmax=i_max)
|
||
|
s = slabs[5]
|
||
|
ax_ch2.set_title(f"CH2 ({s["e"]} cm-1)")
|
||
|
|
||
|
ax_ch3, _ = axes[:,2]
|
||
|
ax_ch3.imshow(slabs[16]["data"], vmin=i_min, vmax=i_max)
|
||
|
s = slabs[16]
|
||
|
ax_ch3.set_title(f"CH3 ({s["e"]} cm-1)")
|
||
|
|
||
|
plt.tight_layout()
|
||
|
plt.show()
|
||
|
|