71 lines
2.6 KiB
Matlab
71 lines
2.6 KiB
Matlab
function plotMeanWithSE(scan_values, data_values, varargin)
|
|
%% plotMeanWithSE: Plots mean ± standard error vs a scan parameter.
|
|
%
|
|
% Usage:
|
|
% plotMeanWithSE(scan_values, data_values, ...
|
|
% 'Title', 'My Title', 'XLabel', 'Parameter', 'YLabel', 'Mean Value', ...
|
|
% 'FigNum', 1, 'FontName', 'Arial', 'YLim', [0 1], ...
|
|
% 'SaveFileName', 'mean_with_se.fig', 'SaveDirectory', 'results', ...
|
|
% 'SkipSaveFigures', false);
|
|
|
|
% --- Parse optional name-value pairs ---
|
|
p = inputParser;
|
|
addParameter(p, 'Title', '', @(x) ischar(x) || isstring(x));
|
|
addParameter(p, 'XLabel', '', @(x) ischar(x) || isstring(x));
|
|
addParameter(p, 'YLabel', '', @(x) ischar(x) || isstring(x));
|
|
addParameter(p, 'FigNum', [], @(x) isempty(x) || (isnumeric(x) && isscalar(x)));
|
|
addParameter(p, 'FontName', 'Arial', @ischar);
|
|
addParameter(p, 'FontSize', 14, @isnumeric);
|
|
addParameter(p, 'YLim', [], @(x) isempty(x) || isnumeric(x));
|
|
addParameter(p, 'SkipSaveFigures', false, @islogical);
|
|
addParameter(p, 'SaveFileName', 'mean_with_se.fig', @ischar);
|
|
addParameter(p, 'SaveDirectory', pwd, @ischar);
|
|
parse(p, varargin{:});
|
|
opts = p.Results;
|
|
|
|
% --- Compute mean and standard error ---
|
|
[unique_vals, ~, idx] = unique(scan_values);
|
|
mean_vals = zeros(size(unique_vals));
|
|
stderr_vals = zeros(size(unique_vals));
|
|
for i = 1:length(unique_vals)
|
|
group = data_values(idx == i);
|
|
if iscell(group)
|
|
groupVals = [group{:}];
|
|
else
|
|
groupVals = group;
|
|
end
|
|
mean_vals(i) = mean(groupVals);
|
|
stderr_vals(i) = std(groupVals) / sqrt(length(groupVals));
|
|
end
|
|
|
|
% --- Create figure ---
|
|
if isempty(opts.FigNum)
|
|
fig = figure;
|
|
else
|
|
fig = figure(opts.FigNum);
|
|
end
|
|
clf(fig);
|
|
set(fig, 'Color', 'w', 'Position', [100 100 950 750]);
|
|
|
|
% --- Plot error bars ---
|
|
errorbar(unique_vals, mean_vals, stderr_vals, 'o--', ...
|
|
'LineWidth', 1.8, 'MarkerSize', 6, 'CapSize', 5);
|
|
|
|
% --- Axis formatting ---
|
|
set(gca, 'FontName', opts.FontName, 'FontSize', opts.FontSize);
|
|
if ~isempty(opts.YLim)
|
|
ylim(opts.YLim);
|
|
end
|
|
xlabel(opts.XLabel, 'Interpreter', 'latex', 'FontName', opts.FontName, 'FontSize', opts.FontSize);
|
|
ylabel(opts.YLabel, 'Interpreter', 'latex', 'FontName', opts.FontName, 'FontSize', opts.FontSize);
|
|
title(opts.Title, 'Interpreter', 'latex', 'FontSize', opts.FontSize + 2, 'FontWeight', 'bold');
|
|
grid on;
|
|
|
|
% --- Save figure ---
|
|
Plotter.saveFigure(fig, ...
|
|
'SaveFileName', opts.SaveFileName, ...
|
|
'SaveDirectory', opts.SaveDirectory, ...
|
|
'SkipSaveFigures', opts.SkipSaveFigures);
|
|
|
|
end
|