SRS/slideshow.py

52 lines
1.3 KiB
Python
Raw Permalink Normal View History

2024-12-18 17:07:43 +01:00
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()