83 lines
3.0 KiB
Matlab
83 lines
3.0 KiB
Matlab
function plotG2MeanCurves(g2_mean_all, g2_error_all, theta_values, scan_parameter_values, scan_parameter_units, varargin)
|
|
%% plotG2MeanCurves
|
|
% Author: Karthik
|
|
% Date: 2025-09-12
|
|
% Version: 1.0
|
|
%
|
|
% Description:
|
|
% Plots mean g2 angular correlations with optional parameters.
|
|
%
|
|
% Notes:
|
|
% Optional notes, references.
|
|
|
|
% --- Parse name-value pairs ---
|
|
p = inputParser;
|
|
addParameter(p, 'Title', 'g^{(2)}(\delta\theta) vs \delta\theta', @(x) ischar(x) || isstring(x));
|
|
addParameter(p, 'XLabel', '$\delta\theta / \pi$', @(x) ischar(x) || isstring(x));
|
|
addParameter(p, 'YLabel', '$g^{(2)}(\delta\theta)$', @(x) ischar(x) || isstring(x));
|
|
addParameter(p, 'FontName', 'Arial', @ischar);
|
|
addParameter(p, 'FontSize', 14, @isnumeric);
|
|
addParameter(p, 'Colormap', @parula);
|
|
addParameter(p, 'FigNum', [], @(x) isempty(x) || (isnumeric(x) && isscalar(x)));
|
|
addParameter(p, 'SkipSaveFigures', false, @islogical);
|
|
addParameter(p, 'SaveFileName', 'figure.fig', @ischar);
|
|
addParameter(p, 'SaveDirectory', pwd, @ischar);
|
|
addParameter(p, 'YLim', [0 1], @isnumeric);
|
|
parse(p, varargin{:});
|
|
opts = p.Results;
|
|
|
|
nParams = size(g2_mean_all, 2);
|
|
|
|
% Determine unit suffix and interpreter
|
|
switch lower(scan_parameter_units)
|
|
case {'degrees', 'deg', '°'}
|
|
unitSuffix = '^\circ'; % LaTeX degree symbol
|
|
txtInterpreter = 'tex';
|
|
case {'gauss', 'g'}
|
|
unitSuffix = ' G';
|
|
txtInterpreter = 'none';
|
|
otherwise
|
|
unitSuffix = '';
|
|
txtInterpreter = 'none';
|
|
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]);
|
|
hold on;
|
|
|
|
% --- Colormap ---
|
|
cmap = opts.Colormap(nParams);
|
|
|
|
% --- Plot data with errorbars ---
|
|
legend_entries = cell(nParams, 1);
|
|
for i = 1:nParams
|
|
errorbar(theta_values/pi, g2_mean_all{i}, g2_error_all{i}, ...
|
|
'o', 'Color', cmap(i,:), 'MarkerSize', 4, 'MarkerFaceColor', cmap(i,:), 'CapSize', 4);
|
|
|
|
% Update overlay text with scan parameter + unit
|
|
legend_entries{i} = sprintf('%.2f%s', scan_parameter_values(i), unitSuffix);
|
|
end
|
|
|
|
% --- Formatting ---
|
|
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, 'FontName', opts.FontName, 'FontName', opts.FontName, 'FontSize', opts.FontSize + 2);
|
|
legend(legend_entries, 'Interpreter', txtInterpreter, 'Location', 'bestoutside');
|
|
set(gca, 'FontName', opts.FontName, 'FontSize', opts.FontSize);
|
|
ylim(opts.YLim);
|
|
grid on;
|
|
|
|
% --- Save figure ---
|
|
Plotter.saveFigure(fig, ...
|
|
'SaveFileName', opts.SaveFileName, ...
|
|
'SaveDirectory', opts.SaveDirectory, ...
|
|
'SkipSaveFigures', opts.SkipSaveFigures);
|
|
|
|
end
|