Visualizing ODFs edit page

Choosing a View

An orientation distribution function (ODF) is a density on the three-dimensional curved space of rotations. No flat picture can preserve all of that geometry, so every ODF plot answers a particular question.

This page assumes the normalization in ODF Theory and the model components in ODF Modeling. The rotation coordinates themselves are introduced in Rotation Representations.

There are two direct ways to draw an ODF:

  1. parametrize orientation space by three coordinates and draw an isodensity surface in three dimensions;
  2. cut orientation space into two-dimensional sections and draw the ODF value on each section.

Sections are the usual choice for a printed ODF because no feature can be hidden behind another panel. Which sections are cut matters more than it looks.

Pole figures and inverse pole figures are different. They are projections that integrate the ODF along a curve, whereas a section evaluates the ODF on a slice. The color in every plot below represents density in multiples of a random distribution (mrd), not a volume fraction at one orientation.

A plotting convention states how the specimen reference frame is laid out on screen. The convention below draws Y upward and X to the right. It does not rotate the ODF or change its reference frame.

plottingConvention.default('y↑→x');

A Model with Known Features

The same normalized model is used in every view. It contains two localized components and one fibre component, with mixture fractions 0.1, 0.2, and 0.7.

cs = crystalSymmetry('32');
mod1 = orientation.byEuler(90*degree,40*degree,110*degree,'ZYZ',cs);
mod2 = orientation.byEuler(50*degree,30*degree,-30*degree,'ZYZ',cs);

odf = 0.1*unimodalODF(mod1) ...
  + 0.2*unimodalODF(mod2) ...
  + 0.7*fibreODF(Miller(0,0,1,cs),vector3d.X,...
  'halfwidth',10*degree);

Three-Dimensional Bunge Plot

plot3d with 'Bunge' uses the Euler angles \((\varphi_1,\Phi,\varphi_2)\) as Cartesian plot coordinates.

plot3d(odf,'Bunge');
mtexColorMap('LaboTeX');
mtexColorbar('title','mrd');

The fibre forms extended tubes, while the localized components form compact blobs. Several symmetry-equivalent appearances can lie in the rectangular Euler plotting box; they are not additional components. Rotate this figure interactively to see features hidden behind one another. That need for interaction is the main weakness of a 3-D plot on a page. Euler coordinates also stretch some regions and squeeze others, so an apparent volume in this box may be a parametrization artefact.

Three-Dimensional Axis--Angle Plot

The 'axisAngle' flag plots the scaled-axis vector

\[ \mathbf{r}=\omega\mathbf{n}, \]

where \(\mathbf{n}\) is the rotation axis and \(\omega\) is the rotation angle of a symmetry-reduced representative.

plot3d(odf,'axisAngle');
mtexColorMap('LaboTeX');
mtexColorbar('title','mrd');

The same tube and blobs now occupy a compact, curved fundamental region. Radial distance has the useful meaning of rotation angle, but apparent volume is still distorted. Axis--angle coordinates are not an equal-volume map. They are often easier to interpret for misorientations; 3D Orientation Visualizations also compares Rodrigues, homochoric, and cubochoric coordinates.

Classical Euler Sections

plotSection evaluates the ODF on a stack of two-dimensional slices. The explicit 'phi2' flag selects the classical sections of constant third Bunge Euler angle \(\varphi_2\). By default the sections are at constant angles of \(\varphi_2\).

plotSection(odf,'phi2');
mtexColorMap('LaboTeX');
mtexColorbar('title','mrd');

The six panels are successive slices, not six projections. Following the fibre from panel to panel traces a line through orientation space, while each localized component occupies only nearby slices. This splitting is why a component can be difficult to recognize from one panel alone.

Euler Angle Sections explains how to choose the panel values and layout. MTEX also supports sections of constant \(\varphi_1\) or \(\Phi\) in the Bunge convention, and constant \(\alpha\) or \(\gamma\) in the Matthies convention.

Sigma Sections

Sigma sections reorganize the same three orientation coordinates around a selected crystal axis. MTEX uses the Matthies coordinate \(\sigma=\alpha+\gamma\). Do not identify it with the informal Bunge-angle expression \(\varphi_1-\varphi_2\) sometimes attached to these plots.

plotSection(odf,'sigma');
mtexColorMap('LaboTeX');
mtexColorbar('title','mrd');

The localized components occupy compact regions, while the model fibre reaches the rim in successive panels. Sigma sections are not a universally superior replacement for the classical view. They are often especially compact for trigonal, tetragonal, and hexagonal symmetry, where one crystal axis is distinguished. A component spread over several \(\varphi_2\) sections may then be easier to follow in one sigma section. Sigma Sections develops this geometric reading.

Along a Fibre

A section need not be a plane. Evaluating the ODF along a curve returns the density itself rather than a projection. This is the sharpest view when the chosen fibre expresses the physical question.

close all;

% select a fibre of interest
f = fibre(Miller(1,2,-3,2,cs),vector3d(2,1,1));

plot(odf,f,'LineWidth',2,'figSize','small');

The curve contains two pronounced peaks separated by low-density intervals. The vertical axis is the ODF value in mrd, so this trace can compare densities along the chosen fibre directly. It does not collect density from neighbouring orientations as a pole-figure projection does.

Euler Plotting Bounds and Symmetry

The Bunge plot uses a rectangular bounding box whose angle ranges depend on crystal and specimen symmetry. The bounds used by MTEX are

symmetry

1

2

222

3

32

4

422

6

622

23

432

\(\varphi_1\)

\(360^{\circ}\)

\(360^{\circ}\)

\(360^{\circ}\)

\(360^{\circ}\)

\(360^{\circ}\)

\(360^{\circ}\)

\(360^{\circ}\)

\(360^{\circ}\)

\(360^{\circ}\)

\(360^{\circ}\)

\(360^{\circ}\)

\(\Phi\)

\(180^{\circ}\)

\(180^{\circ}\)

\(90^{\circ}\)

\(180^{\circ}\)

\(90^{\circ}\)

\(180^{\circ}\)

\(90^{\circ}\)

\(180^{\circ}\)

\(90^{\circ}\)

\(90^{\circ}\)

\(90^{\circ}\)

\(\varphi_2\)

\(360^{\circ}\)

\(180^{\circ}\)

\(180^{\circ}\)

\(120^{\circ}\)

\(120^{\circ}\)

\(90^{\circ}\)

\(90^{\circ}\)

\(60^{\circ}\)

\(60^{\circ}\)

\(180^{\circ}\)

\(90^{\circ}\)

With identity specimen symmetry, the first Euler angle remains \(360^{\circ}\); crystal symmetry alone does not reduce it. Specimen symmetry can restrict this angle, with the final bound depending on the symmetry pair. For point groups 23 and 432, this box does not account for the threefold axis. Each orientation can therefore appear three times within the box. fundamentalRegionEuler returns these plotting bounds.

csCubic = crystalSymmetry('432');
ssOrtho = specimenSymmetry('222');
[maxPhi1,maxPhi,maxPhi2] = fundamentalRegionEuler(csCubic,ssOrtho);
eulerBounds = [maxPhi1,maxPhi,maxPhi2] ./ degree
eulerBounds =
    90    90    90

The displayed result is the familiar cube with bounds \(90^{\circ}\) by \(90^{\circ}\) by \(90^{\circ}\) for cubic crystal and orthorhombic specimen symmetry. It is a bounding box, not the fundamental region itself. For cubic symmetry the box has about three times the volume needed for one representative, which explains the repeated appearances in the first figure.

Given an arbitrary orientation, project2EulerFR selects a symmetry-equivalent representative inside this Euler box.

ori = orientation.rand(csCubic,ssOrtho);
[phi1,Phi,phi2] = ori.project2EulerFR;
projectedEuler = [phi1,Phi,phi2] ./ degree
projectedEuler =
   23.0418   18.5318   17.8785

All three displayed coordinates lie between \(0^{\circ}\) and \(90^{\circ}\). This representative is suitable for the Euler plotting box, but the box still contains symmetry-related duplicates elsewhere. Fundamental Regions constructs the compact symmetry-reduced region used by the axis--angle plot.

References

Next

The section families have detailed pages, Euler Angle Sections and Sigma Sections. The projections onto the sphere are Pole Figures and Inverse Pole Figures. Use Properties when the result should be a number rather than another view.

Citing this page. This page is part of the documentation of MTEX, a free and open source MATLAB toolbox for analyzing and modeling crystallographic textures. It was written by The MTEX Developers and is published at https://mtex-toolbox.github.io/ODFPlot.html. If you use MTEX, or reuse text or figures from this page, in your research, please cite

F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63

BibTeX
@article{bachmann2010mtex,
  author  = {F. Bachmann and R. Hielscher and H. Schaeben},
  title   = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
  journal = {Solid State Phenomena},
  volume  = {160},
  pages   = {63-68},
  year    = {2010},
  doi     = {10.4028/www.scientific.net/SSP.160.63},
  url     = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}

Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.