We can slice our 3D Fermi map data in order to get a particular plane using the plane_slice function. Say, we need a constant energy cut.

```python showLineNumbers import arpespythontools as arp data, energy, theta, phi = arp.load_ses_map('sample_map_data.zip')

We want iso-energy surface integrated between energy values 15.6 and 15.8 eV

iso_energy_surf = arp.plane_slice(data, energy, 15.6, 15.8)

Plot image

import matplotlib.pyplot as plt %matplotlib inline

Above line is specific to Jupyter Notebook

plt.figure(figsize = (8, 6)) plt.imshow(iso_energy_surf, origin = 'lower', aspect = 'auto', \ extent = (theta[0], theta[-1], phi[0], phi[-1])) plt.xlabel("$\phi$ (deg)") plt.ylabel("$\theta$ (deg)") plt.show()

This should give you an iso-energy surface like this:

<picture>
  <source type="image/webp" srcSet={require("/img/iso-energy-surface.webp").default} />
  <img src={require("/img/iso-energy-surface.png").default} alt="iso-energy-surface" />
</picture>

How about if we want the slice along another axis? All we need is transpose the
data, and provide the correct axis order.

```python showLineNumbers
# integrating phi values between (-0.5, 0.5) degrees
phi_slice = arp.plane_slice(data.transpose([2, 0, 1]), phi, -0.5, 0.5)

# Plot image
import matplotlib.pyplot as plt
%matplotlib inline
# Above line is specific to Jupyter Notebook
plt.figure(figsize = (8, 6))
plt.imshow(phi_slice, origin = 'lower', aspect = 'auto', \
            extent = (phi[0], phi[-1], energy[0], energy[-1]))
plt.xlabel("$\\theta$ (deg)")
plt.ylabel("$E_{kin}$ (eV)")
plt.show()

phi-slice