FFT Plotting Module
FFT Plotting Module
Specialized plotting functionality for FFT analysis results.
- class mmpp.fft.plot.FFTPlotter(results, mmpp_instance=None)[source]
Bases:
object
Specialized plotter for FFT analysis results.
Provides FFT-specific plotting capabilities.
- __init__(results, mmpp_instance=None)[source]
Initialize FFT plotter.
Parameters:
- resultsList or single result
ZarrJobResult objects to plot
- mmpp_instanceMMPP, optional
Reference to parent MMPP instance
- power_spectrum(dataset_name=None, method=1, z_layer=-1, log_scale=True, normalize=False, save=True, force=False, save_dataset_name=None, figsize=None, save_path=None, **kwargs)[source]
Plot power spectrum for all results.
Parameters:
- dataset_namestr, optional
Dataset name (default: auto-select largest m dataset)
- methodint, optional
FFT method (default: 1)
- z_layerint, optional
Z-layer (default: -1)
- log_scalebool, optional
Use logarithmic scale for power (default: True)
- normalizebool, optional
Normalize power spectra (default: False)
- savebool, optional
Save FFT result to zarr file (default: True)
- forcebool, optional
Force recalculation and overwrite existing (default: False)
- save_dataset_namestr, optional
Custom name for saved dataset (default: auto-generated)
- figsizetuple, optional
Figure size
- save_pathstr, optional
Path to save figure
- **kwargsAny
Additional FFT configuration options
Returns:
: tuple
(figure, axes) matplotlib objects
- param dataset_name:
- type dataset_name:
- param method:
- type method:
- param z_layer:
- type z_layer:
- param log_scale:
- type log_scale:
- param normalize:
- type normalize:
- param save:
- type save:
- param force:
- type force:
- param save_dataset_name:
- type save_dataset_name:
- param figsize:
- type figsize:
- param save_path:
- type save_path:
Main Classes
FFTPlotter
- class mmpp.fft.plot.FFTPlotter(results, mmpp_instance=None)[source]
Bases:
object
Specialized plotter for FFT analysis results.
Provides FFT-specific plotting capabilities.
- __init__(results, mmpp_instance=None)[source]
Initialize FFT plotter.
Parameters:
- resultsList or single result
ZarrJobResult objects to plot
- mmpp_instanceMMPP, optional
Reference to parent MMPP instance
- power_spectrum(dataset_name=None, method=1, z_layer=-1, log_scale=True, normalize=False, save=True, force=False, save_dataset_name=None, figsize=None, save_path=None, **kwargs)[source]
Plot power spectrum for all results.
Parameters:
- dataset_namestr, optional
Dataset name (default: auto-select largest m dataset)
- methodint, optional
FFT method (default: 1)
- z_layerint, optional
Z-layer (default: -1)
- log_scalebool, optional
Use logarithmic scale for power (default: True)
- normalizebool, optional
Normalize power spectra (default: False)
- savebool, optional
Save FFT result to zarr file (default: True)
- forcebool, optional
Force recalculation and overwrite existing (default: False)
- save_dataset_namestr, optional
Custom name for saved dataset (default: auto-generated)
- figsizetuple, optional
Figure size
- save_pathstr, optional
Path to save figure
- **kwargsAny
Additional FFT configuration options
Returns:
: tuple
(figure, axes) matplotlib objects
- param dataset_name:
- type dataset_name:
- param method:
- type method:
- param z_layer:
- type z_layer:
- param log_scale:
- type log_scale:
- param normalize:
- type normalize:
- param save:
- type save:
- param force:
- type force:
- param save_dataset_name:
- type save_dataset_name:
- param figsize:
- type figsize:
- param save_path:
- type save_path:
Usage Examples
Basic Spectrum Plotting
import mmpp
# Load data and get FFT interface
db = mmpp.open('/path/to/data')
result = db.find(solver=3)[0]
# Plot power spectrum
fig, ax = result.fft.plot_spectrum(
dset='m_z11',
log_scale=True,
normalize=False
)
# Customize plot
ax.set_title('FMR Power Spectrum')
ax.set_xlabel('Frequency (GHz)')
ax.set_ylabel('Power (a.u.)')
Advanced Plotting Options
# Plot with custom styling
fig, ax = result.fft.plot_spectrum(
dset='m_z11',
method=1,
z_layer=-1,
log_scale=True,
normalize=True,
figsize=(12, 8),
dpi=150,
title='Normalized FMR Spectrum',
xlabel='Frequency (GHz)',
ylabel='Normalized Power'
)
# Add peak markers
frequencies = result.fft.frequencies()
power = result.fft.power()
peak_indices = np.where(power > 0.5 * power.max())[0]
ax.scatter(frequencies[peak_indices], power[peak_indices],
color='red', s=50, zorder=5, label='Peaks')
ax.legend()
Multi-Dataset Comparison
# Compare multiple datasets
datasets = ['m_x11', 'm_y11', 'm_z11']
fig, axes = plt.subplots(len(datasets), 1, figsize=(12, 4*len(datasets)))
for i, dset in enumerate(datasets):
result.fft.plot_spectrum(
dset=dset,
ax=axes[i],
title=f'Component: {dset}',
log_scale=True
)
plt.tight_layout()
Batch Plotting
# Plot spectra for multiple results
results = db.find(solver=3, limit=5)
fig, axes = plt.subplots(2, 3, figsize=(18, 12))
axes = axes.flatten()
for i, result in enumerate(results):
if i < len(axes):
result.fft.plot_spectrum(
ax=axes[i],
title=f'Result {i+1}',
log_scale=True
)
plt.tight_layout()