Files
paper_2025/python/fig_env_sd_conversion.py
j-hartling dc4443aa17 Finished (:D) fig_invariance_log_hp.pdf.
Added movable label string to time_bar().
2026-03-23 15:38:49 +01:00

112 lines
2.5 KiB
Python

import plotstyle_plt
import numpy as np
import matplotlib.pyplot as plt
from plot_functions import xlabel, ylabel, strip_zeros, letter_subplots
# GENERAL SETTINGS:
data_path = '../data/inv/noise_env/sd_conversion.npz'
save_path = '../figures/fig_noise_env_sd_conversion.pdf'
# PLOT SETTINGS:
fig_kwargs = dict(
figsize=(32/2.54, 16/2.54),
nrows=2,
ncols=1,
sharex=True,
sharey=True,
gridspec_kw=dict(
wspace=0,
hspace=0.1,
left=0.09,
right=0.98,
bottom=0.08,
top=0.95,
)
)
grid_line_kwargs = dict(
visible=True,
which='major',
axis='both',
color='k',
lw=0.5,
)
trial_kwargs = dict(
color='k',
alpha=0.5,
lw=0.5,
)
line_kwargs = dict(
color='black',
lw=1,
)
fill_kwargs = dict(
color='k',
alpha=0.5,
)
xlabels = dict(
bottom='$\\text{scale }\\alpha$',
)
ylabels = dict(
top='$\\sigma_{\\eta}\\,(PLACEHOLDER \\,\\text{realizations})$',
bottom='$\\sigma_{\\eta}\\,(\\text{mean}\\,\\pm\\,\\text{SD})$',
)
xlab_kwargs = dict(
y=0,
fontsize=20,
ha='center',
va='bottom',
)
ylab_kwargs = dict(
x=0,
fontsize=20,
ha='center',
va='top',
)
title_kwargs = dict(
t='$\\sigma_{\\text{filt}}\\,=$',
x=0.5,
y=1,
ha='center',
va='top',
fontsize=20,
)
letter_kwargs = dict(
x=0.005,
y=0.99,
fontsize=22,
ha='left',
va='top',
)
# Fetch data:
data = dict(np.load('../data/inv/noise_env/sd_conversion.npz'))
n = data['n_trials']
# Adjust parameters:
ylabels['top'] = f'$\\sigma_{{\\eta}}\\,({data["n_trials"]}\\text{{ realizations}})$'
title_kwargs['t'] += f'$\\,{strip_zeros(data["sd_factor"])}$'
# Prepare graph:
fig, (ax1, ax2) = plt.subplots(**fig_kwargs)
fig.suptitle(**title_kwargs)
ax1.grid(**grid_line_kwargs)
ax1.set_xlim(data['scales'][0], data['scales'][-1])
ax1.set_xscale('symlog', linthresh=data['scales'][1], linscale=0.5)
ax1.set_ylim(0, 0.1)
ylabel(ax1, ylabels['top'], transform=fig.transFigure, **ylab_kwargs)
ax2.grid(**grid_line_kwargs)
xlabel(ax2, xlabels['bottom'], transform=fig.transFigure, **xlab_kwargs)
ylabel(ax2, ylabels['bottom'], transform=fig.transFigure, **ylab_kwargs)
letter_subplots((ax1, ax2), **letter_kwargs)
# Plot individual trials:
ax1.plot(data['scales'], data['trials'], **trial_kwargs)
# Plot mean and spread across trials:
ax2.plot(data['scales'], data['mean'], **line_kwargs)
ax2.fill_between(data['scales'], data['mean'] - data['spread'], data['mean'] + data['spread'], **fill_kwargs)
if save_path is not None:
fig.savefig(save_path)
plt.show()