-
Signed-off-by:
preischig <peter.reischig@esrf.fr>
Signed-off-by:
preischig <peter.reischig@esrf.fr>
gtStrainPlotCompHists.m 3.01 KiB
function hf = gtStrainPlotCompHists(inp, varargin)
% Plots histograms of the six strain components of all grains.
par.fontsize = 12;
par.edgecolor = [0.28 0.17 0.11]; %'w';
par.facecolor = [0.28 0.17 0.11];
par.linecolor = 'r';
par.boundnorm = [-0.01 0.01];
par.boundshear = [-0.01 0.01];
par.binnorm = 0.0002;
par.binshear = 0.0002;
%par.ticks = -0.05 : 0.002 : 0.05;
par = parse_pv_pairs(par, varargin);
if iscell(inp)
% Store all strain tensors in an array
st = zeros(3, 3, length(inp));
st(1,1,:) = gtIndexAllGrainValues(inp,'strain','strainT', 1,1);
st(1,2,:) = gtIndexAllGrainValues(inp,'strain','strainT', 1,2);
st(1,3,:) = gtIndexAllGrainValues(inp,'strain','strainT', 1,3);
st(2,1,:) = gtIndexAllGrainValues(inp,'strain','strainT', 2,1);
st(2,2,:) = gtIndexAllGrainValues(inp,'strain','strainT', 2,2);
st(2,3,:) = gtIndexAllGrainValues(inp,'strain','strainT', 2,3);
st(3,1,:) = gtIndexAllGrainValues(inp,'strain','strainT', 3,1);
st(3,2,:) = gtIndexAllGrainValues(inp,'strain','strainT', 3,2);
st(3,3,:) = gtIndexAllGrainValues(inp,'strain','strainT', 3,3);
elseif isnumeric(inp)
st = inp;
end
hf = figure('name','Histograms of strain components','Units','normalized',...
'Position',[0 0.5 0.5 0.5]);
hs(1) = subplot(2,3,1);
[minv(1), maxv(1)] = sfDrawHist(st, 1,1,'\epsilon_{11}', par);
hs(2) = subplot(2,3,2);
[minv(2), maxv(2)] = sfDrawHist(st, 2,2,'\epsilon_{22}', par);
hs(3) = subplot(2,3,3);
[minv(3), maxv(3)] = sfDrawHist(st, 3,3,'\epsilon_{33}', par);
hs(4) = subplot(2,3,4);
[minv(4), maxv(4)] = sfDrawHist(st, 2,3,'\epsilon_{23}', par);
hs(5) = subplot(2,3,5);
[minv(5), maxv(5)] = sfDrawHist(st, 1,3,'\epsilon_{13}', par);
hs(6) = subplot(2,3,6);
[minv(6), maxv(6)] = sfDrawHist(st, 1,2,'\epsilon_{12}', par);
ylims = get(hs,'ylim');
ylims = vertcat(ylims{:});
ymin = min(ylims(:,1));
ymax = max(ylims(:,2));
set(hs, 'xlim', [min(minv), max(maxv)])
for ii = 1:6
plot(hs(ii), [0 0], [ymin ymax], 'LineStyle', '-.', 'LineWidth', 2,...
'Color', par.linecolor)
end
end % of main function
%%%%%%%%%%%%%%%%%%%%%%%%%
%% Draw histogram
%%%%%%%%%%%%%%%%%%%%%%%%%
function [minval,maxval] = sfDrawHist(st, i1, i2, label, par)
if (i1 == i2)
edges = par.boundnorm(1) : par.binnorm : par.boundnorm(2);
bins = (par.boundnorm(1) + par.binnorm/2) : par.binnorm : (par.boundnorm(2) - par.binnorm/2);
else
edges = par.boundshear(1) : par.binshear : par.boundshear(2);
bins = (par.boundshear(1) + par.binshear/2) : par.binshear : (par.boundshear(2) - par.binshear/2);
end
hst = histc(squeeze(st(i1,i2,:)), edges);
hst(end) = [];
bar(bins, hst, 'FaceColor',par.facecolor, 'EdgeColor',par.edgecolor)
set(gca, 'fontunits','points', 'fontsize',par.fontsize); %, 'XTick',par.ticks)
xlabel(label, 'fontsize', par.fontsize)
grid on
hold on
minval = find(hst,1,'first');
maxval = find(hst,1,'last');
minval = bins(minval);
maxval = bins(maxval);
end