Something went wrong on our end
-
Andy Snawerdt authored
Updated analysis tools to handle spaces in header files and properly format axis, titles, and legends
Andy Snawerdt authoredUpdated analysis tools to handle spaces in header files and properly format axis, titles, and legends
plot_sub.m 3.26 KiB
function plot_sub(expData, useMarker, varargin)
%PLOT_SUB This function make sub 2x1 subplots of data headers mentioned
% expData - structure that holds all of the data
% useMarker - flag to indicated whether or not to plot vertical lines
% at the marker locations
% varargin - the data headers to be plotted along with optional
% formatting parameters
%
% Example of varargin: 'Pitch','r-','Roll','Yaw','go'
% This means that Pitch will be plotted in red solids, Roll with no
% special formatting and Yaw in green circles.
% extracting the Time structure
time = expData.Time;
currHeaderIndex = 0;
% extract markerlocations, if any
markerLocations = [];
if(useMarker)
if(~isfield(expData,'Marker'))
error('Error! Attempting to plot markers without Marker field');
else
markerLocations = find(expData.Marker.data);
end
end
% calculating number of headers
numOfHeaders = 0;
for i = 1:length(varargin)
if(~isPlotCharString(varargin{i}))
numOfHeaders = numOfHeaders + 1;
end
end
% building the plot statement to be executed
for i = 1:length(varargin)
% continue to next argument if the current argument is a plot
% formatting string
if(isPlotCharString(varargin{i}))
continue;
end
varargin{i} = strrep(varargin{i},' ', '_');
% keeping track of the number of headers
currHeaderIndex = currHeaderIndex + 1;
% adding header name to the plot statment
plotString = strcat('plot(time.data,expData.',varargin{i},'.data');
% adding the plot formatting string if it exists
if(i ~= length(varargin))
if(isPlotCharString(varargin{i+1}))
plotString = strcat(plotString,',''',varargin{i+1},''');');
else
% use the plotting style parameters set for this header
plotCharString = buildPlotCharString(eval(['expData.' varargin{i} '.params']));
plotString = strcat(plotString,',''', plotCharString, ''');');
end
else
% use the plotting parameters set for this header
plotCharString = buildPlotCharString(eval(['expData.' varargin{i} '.params']));
plotString = strcat(plotString,',''', plotCharString, ''');');
end
% checking to see if a new figure needs to be created
if(mod(currHeaderIndex,2) == 1)
figure;
if(currHeaderIndex ~= numOfHeaders)
subplot(2,1,1);
end
else
subplot(2,1,2);
end
%% plotting data and making it look pretty
eval(plotString);
title(varargin{i},'Interpreter','none');
xlabel(['Time (' time.unit ')']);
if(eval(['isempty(expData.' varargin{i} '.unit)']))
yAxisLabel = varargin{i};
else
yAxisLabel = [varargin{i} ' (' eval(['expData.' varargin{i} '.unit']) ')'];
end
ylabel(yAxisLabel,'Interpreter','none');
xlim([0,time.data(end)]);
grid ON;
set(gca,'Color',eval(['expData.' varargin{i} '.params.backgnd']));
% plotting markers, if any
for i = 1:numel(markerLocations)
%hx = graph2d.constantline(time.data(markerLocations(i)),'Linestyle', '--','Color', [0.7 0.7 0.7]);
%changedependvar(hx,'x');
text(time.data(markerLocations(i)),(min(ylim)+max(ylim))/2, num2str(i));
end
end
end