====== Plotting grain orientations ======
Typically, grain orientations are plotted with [[software:mtex|MTeX]] based on the Euler angles of each grain.
===== Extracting Euler angles =====
Extracting a list of Euler angles for the indexed grains can be done using [[processing:extracteulerangles|timelessExtractEulerAngles]], which is part of the [[software:timelesstools|TIMEleSS tools]].
You will have a list of Bunge Euler angles (using a Bunge convention) as below. You can simply save it in a text file.
-31.88 273.49 206.05
-55.09 133.91 157.65
83.39 235.30 204.46
-47.58 78.99 149.71
-60.87 17.28 33.07
===== Loading and plotting grain orientations in MTeX =====
Here is an example of a script that will load these orientations and plot them in a pole figures. The example is for olivine and can be adjusted to your needs.
%%
% Define crystal and sample symmetry
cs_ol = crystalSymmetry('Pnma',[9.915267 5.886196 4.713400])
ss = specimenSymmetry()
% Plotting convention
plotx2east
% File with Euler angles
fname = fullfile('/path/to/folder/',...
'','euler.txt');
%%
% Load file and create the corresponding list of orientations
ori = load(fname)
n = size(ori);
n = n(1);
for i = 1:n
phi1 = ori(i,1)*degree;
Phi = ori(i,2)*degree;
phi2 = ori(i,3)*degree;
ori0(i) = orientation('Euler',phi1,Phi,phi2,cs_ol,ss);
end
%%
% Plot grain orientations
h = Miller({1,0,0},{0,1,0},{0,0,1},cs_ol)
plotPDF(ori0,h,'antipodal','MarkerSize',10, 'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b')
===== Loading and plotting grain orientations in MTeX, with colors! =====
Here is an example of a script that will load these orientations and plot them in a pole figures. The example is for olivine and can be adjusted to your needs.
In this case grains are assigned a color based on the ODF intensity for their orientations.
{{ :processing:resultsevalutation:grains-indexing-1.jpg?direct&600 |}}
%%
% Define crystal and sample symmetry
cs_ol = crystalSymmetry('Pnma',[9.915267 5.886196 4.713400])
ss = specimenSymmetry()
% Plotting convention
plotx2east
% File with Euler angles
fname = fullfile('/path/to/folder/',...
'','euler.txt');
%%
% Load file and create the corresponding list of orientations
ori = load(fname)
n = size(ori);
n = n(1);
for i = 1:n
phi1 = ori(i,1)*degree;
Phi = ori(i,2)*degree;
phi2 = ori(i,3)*degree;
ori0(i) = orientation('Euler',phi1,Phi,phi2,cs_ol,ss);
end
%%
% Plots grains using a color scale base on ODF fitted to the grains
% Fit an ODF to the data
odf = calcODF(ori0,15*degree)
% Plot orientations, colored based on ODF
plotPDF(ori0,eval(odf,ori0),h,'antipodal','MarkerSize',10, 'MarkerEdgeColor', 'b')
CLim(gcm,[0,10])
mtexColorbar
===== Loading and plotting grain orientations in MTeX, in an inverse pole figure, and with colors! =====
Here is an example of a script that will load these orientations and plot them in a inverse pole figures. The example is for olivine and can be adjusted to your needs. Grains are assigned a color based on the ODF intensity for their orientations.
{{ :processing:resultsevalutation:ipf-grains-indexing-1.jpg?direct&400 |}}
%%
% Define crystal and sample symmetry
cs_ol = crystalSymmetry('Pnma',[9.915267 5.886196 4.713400])
ss = specimenSymmetry()
% Plotting convention
plotx2east
% File with Euler angles
fname = fullfile('/path/to/folder/',...
'','euler.txt');
%%
% Load file and create the corresponding list of orientations
ori = load(fname)
n = size(ori);
n = n(1);
for i = 1:n
phi1 = ori(i,1)*degree;
Phi = ori(i,2)*degree;
phi2 = ori(i,3)*degree;
ori0(i) = orientation('Euler',phi1,Phi,phi2,cs_ol,ss);
end
%%
% Plots grains using a color scale base on ODF fitted to the grains
% Fit an ODF to the data
odf = calcODF(ori0,15*degree)
% Plot grains as IPF of the compression (if compression is in X), colored based on ODF
plotIPDF(ori0,eval(odf,ori0),[vector3d.X],'antipodal','MarkerSize',10, 'MarkerEdgeColor', 'b')
CLim(gcm,[0,10])
mtexColorbar
===== Comparing grain orientations in MTeX =====
The following script will load results from 3 different indexings a plot the results so they can be compared.
The image below for instance shows the results of a first indexing in blue, a second indexing in red, and a third indexing in yellow.
{{ :processing:resultsevalutation:indexations-1-2-3.jpg?direct&600 |}}
%%
% Define crystal and sample symmetry
cs_ol = crystalSymmetry('Pnma',[9.915267 5.886196 4.713400])
ss = specimenSymmetry()
% Plotting convention
plotx2east
% Files with Euler angles
fname1 = fullfile('/path/to/folder/',...
'','euler-1.txt');
fname0 = fullfile('/path/to/folder/',...
'','euler-2.txt');
fname2 = fullfile('/path/to/folder/',...
'','euler-3.txt');
%%
% Load file and create the corresponding 3 lists of orientations
ori = load(fname0)
n = size(ori);
n = n(1);
for i = 1:n
phi1 = ori(i,1)*degree;
Phi = ori(i,2)*degree;
phi2 = ori(i,3)*degree;
ori0(i) = orientation('Euler',phi1,Phi,phi2,cs_ol,ss);
end
ori = load(fname1)
n = size(ori);
n = n(1);
for i = 1:n
phi1 = ori(i,1)*degree;
Phi = ori(i,2)*degree;
phi2 = ori(i,3)*degree;
ori1(i) = orientation('Euler',phi1,Phi,phi2,cs_ol,ss);
end
ori = load(fname2)
n = size(ori);
n = n(1);
for i = 1:n
phi1 = ori(i,1)*degree;
Phi = ori(i,2)*degree;
phi2 = ori(i,3)*degree;
ori2(i) = orientation('Euler',phi1,Phi,phi2,cs_ol,ss);
end
%%
% Plot grain orientations from the 3 files in a way they can be compared
h = Miller({1,0,0},{0,1,0},{0,0,1},cs_ol)
plotPDF(ori0,h,'antipodal','MarkerSize',10, 'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b')
hold on
plotPDF(ori1,h,'antipodal','MarkerSize',8, 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'b')
hold on
plotPDF(ori2,h,'antipodal','MarkerSize',6, 'MarkerFaceColor', 'y', 'MarkerEdgeColor', 'b')