Soil: textures triangle
Saturday 29 August 2009, by Julien Moeys
All the versions of this article:
2010/11/11: The Soil Texture Wizard is now available for download on CRAN, R’s package repository.
2010/05/18: The Soil Texture Wizard ’project page’ is progressively transferred to its new r-forge project page (’soiltexture’ package). The r-forge page is more up-to-date.
"The Soil Texture Wizard" is a set of R functions (and future package) designed to produce texture triangles (plots), classify and transformed soil textures data. These functions virtually allows to plot any soil texture triangle / classification into any triangle geometry (isosceles, right-angled triangles, etc.). This set of function is expected to be useful to people using soil textures data from different soil texture classification or different particle size systems. 8 texture triangles are predefined:
— USDA;
— FAO (which is also the triangle for the soil map of Europe);
— Aisne (France);
— GEPPA (France);
— German triangle (Bodenkundliche Kartieranleitung 1994);
— Soil Survey of England and Wales (UK);
— Australian triangle;
— Belgian triangle;
— Canadian triangle;
— ISSS triangle.
Warning
Soil texture triangle gallery (images)
Features list
Functions source code (.R; last version);
Complete tutorial (pdf; last version);
Other works and softwares on soil textures (triangles)
(No?) future developments
Contact, license, credit and (absence of) guaranty
The R functions, the tutorial and the texture triangles images presented here are provided without any guaranty of conformity with the original classifications (a "certification" work of these triangles is unfortunately totally out of my prerogatives).
As the functions behind "The Soil Texture Wizard" have not been tested by ’independent’ users, they may be modified in order to correct eventual bugs. I will try as much as possible to avoid any change that could hamper the compatibility between different versions of these functions, but I can not guarantee that compatibility will always be maintained.
If you are a R user (an interpreted programming language dedicated to statistics; See the R page on Wikipedia, I have created a gallery of soil texture triangles (images) that presents the 7 triangles implemented in the set of functions.
"The Soil Texture Wizard" is an integrated set of functions for the R software for statistical computing, that allows to:
Create clear, readable soil texture triangles graphics (also called ternary plots or soil texture diagrams), with proper axis labels, either "neutral", or with one of the 8 soil texture classification systems actually pre-defined:
— USDA;
— FAO (which is also the triangle for the soil map of Europe);
— Aisne (France);
— GEPPA (France);
— German triangle (Bodenkundliche Kartieranleitung 1994);
— Soil Survey of England and Wales (UK);
— Australian triangle;
— Belgian triangle (new 2009/10/15).
— Canadian triangle (new 2010/04/16).
— ISSS triangle (new 2010/05/13).
Many thanks to Wei Shangguan, PhD student at the School of geography of Beijing normal university for providing the code of ISSS the triangle.
Implement new texture triangles or create personalized texture triangles, that will be usable as any of the above mentioned soil textures triangle (graphs, classification, etc.);
Numerous graphical possibilities to display soil texture data in a texture triangle, following an option system similar to R plot(), points() and text() functions:
— Simple graphics (points);
— Bubble charts (points sizes and colors are proportional to a 4th variable);
— Graph with text instead of points.
Calculate the texture class(es) (= classification) to which belong soil texture data, in 1 of the 7 predefined system / classification / triangle (or your own custom triangle);
Transform soil textures data from 1 particle sizes system (limits between the clay, silt and sand particles) to another particle size system, with a log-linear transformation (estimation). For instance, it is possible to convert a textures data table measured in a system that have a silt / sand limit is 60 micrometers into a system that has a silt / sand limit is 50 micrometers. It is also possible to define your own texture transformation function, and use it for ’on-the-fly’ transformation of data in texture plots or for texture classification [1].;
Display a texture triangle / classification in a (triangle) geometry different from its default (triangle) geometry. For instance, a texture triangle / classification usually displayed in an isosceles triangle can be displayed in a right-angled triangle. The geometrical parameters that can be changed are:
— The 3 angles of the triangle (free);
— The "direction" of increasing textures for each axes (clockwise, anti-clockwise or "centripetal");
— The location of the 3 texture classes (clay, silt and sand) on the 3 axes (abscissae, left or right axis).
Over-plot / superimpose 2 different texture triangles / classifications into one single plot, whatever their initial "geometry" (for instance the German right-angled soil texture triangle and the USDA isosceles texture triangle can be over-plotted (into a given geometry));
’On the fly’ transformation of textures data particle size when plotting a soil texture triangle;
’On the fly’ transformation of a triangle particle size when over-plotting 2 (different) texture triangles;
Contour plot or image plot of:
— 2D kernel density estimation (based on R-MASS kde2d function) (new 2009/10/13)
— Mahalanobis distance (based on R mahalanobis function), with or without additive log-ratio transformation (new 2009/10/13)
— Inverse weighted distance estimate / smoothing of a 4th variable;
’Normalisation’ of texture data’s ’sum of the 3 texture classes’ to 100% (new 2009/10/13).
Chose between 7 languages for the plot title and the 3 axes legends (English, French, Swedish, German, Spanish, Italian and Dutch), with a simple option;
Most of the functions are optimised for speed, and are thus suitable for mass / batch treatment of soil textures data:
— 3400 soil textures data ’transformed’ per second;
— 14000 soil textures data "classified" per second;
(Under Windows XP, Intel Core 2 Duo, 2,66 Ghz, 3,23 Gb of RAM)
Want to know more?
You can have a look at the last version of the tutorial and his numerous figures and examples, to visualise the features offered by "The Soil Texture Wizard", and download the functions source code (.R) to try them.
These functions are still under development, check the changelog file.
Numerous other works and softwares exist that deal with soil textures and soil textures triangles. Nevertheless, to my knowledge, The Soil Texture Wizard is the only tool that offers an integrated set of functionalities for soil textures (smart graphs + classification + multi-triangle + multi-geometry).
Ternary graphs (without soil textures classes):
— triangle.plot() and triangle.biplot() functions, from the R package ADE4, by Daniel Chessel, Anne-Beatrice Dufour and Stephane Dray. These functions are not specialised in soil textures plots (and can not plot soil texture classes), but offer of nice "zoom" feature that don’t exist in The Soil Texture Wizard, nor in the PLOTRIX package (see below) [2]. For illustrations, see the web-page on triangle.plot() on the R Graph Gallery, by Romain Francois.
— ternaryplot() function in the R package VCD by David Meyer, Achim Zeileis and Kurt Hornik. For illustrations, see the web-page on ternaryplot() on the R Graph Gallery, by Romain Francois.
Ternary graphs (with soil textures classes):
— The functions soil.texture() and soil.texture.uk() from the R package PLOTRIX, by Jim Lemon et al. It allows to create graphs, with or without soil textures data, following the USDA or the UK soil texture triangles. There is also an underlying ternary plot function that can be used without soil texture classes. It is nevertheless not possible to project the triangles into another geometry, nor to transform or classify soil textures data. The R functions presented here ("The Soil Texture Wizard") are originally (i.e. 3 years ago) derived from some functions of the PLOTRIX package. Now, there probably not a single common line of code, and the 2 set of functions are unfortunately not compatible. But The Soil Texture Wizard obviously wouldn’t exist if I haven’t been able to freely adapt the code from PLOTRIX (reason why free and open-source licences are so great). For illustrations of PLOTRIX, see the web-page on soil.texture() on the R Graph Gallery, by Romain Francois.
Automatic classification:
— Texture Autolookup, by Christopher Teh Boon Sung is a standalone program, with a graphical user interface, that can classify soil textures following the USDA, UK, Canadian, FAO texture triangles, or 7 other systems. The work has been published in two articles of "Communications in Soil and Plant Analysis", in 1996 and 2003->http://www.christopherteh.com/tal/index.html]). The software also allows to plot / visualise soil texture data (but the plot function is not very advanced), in 2 different triangle geometries.
— TRIANGLE, "A Program For Soil Textural Classification", by Aris Gerakis and Brian Baer allows to classify soil textures data after the USDA soil texture triangle (published in the Soil Science Society of America Journal in 1999).
— r.soils.texture is a [Grass-GIS http://grass.osgeo.org/] add-on for classifying raster files of soil textures with 3 classification systems (USDA, FAO, ISSS). Note that this is not R code.
Articles related to soil texture triangles or systems
— Richer de Forges A., Feller C., Jamagne M. & Arrouays D., 2008. "Perdus dans le triangle des textures" (Études et Gestion des Sols, 15:2, pp. 97-111) (en: "Lost in the textures triangle") are presenting a gallery of 29 soil textures triangles, either still in use nowadays or that were used in the past, from France and other countries, and comparing the location of soil texture triangles limits between several triangles. The article also presents a table comparing the particle size limits (for clay, silt and sand fractions) between numerous countries. See also their poster in English. The "comparison" work has been done with a geographic information system (ArcGIS?).
— B. Minasny and A.B. McBratney. The australian soil texture boomerang: a comparison of the australian and usda/fao soil particle-size classication systems. Australian Journal of Soil Research, 39:1443—1451, 2001. LINK.
— A. Nemes, J.H.M. Wösten, A. Lilly, and J.H. Oude Voshaar. Evaluation of different procedures to interpolate particle-size distributions to achieve compatibility within soil databases. Geoderma, 90:187—202, 1999. LINK.
The development of The Soil Texture Wizard set of functions has started due to my need for "manipulating" more easily soil texture data (and graphs) during my work (PhD and PostDoc). There is also a very significant ’personal’ investment to make these functions usable by other users.
My present work is less (or not at all) related to international soil textures data collection, and my personal investment to develop these functions will also decrease drastically...
So, apart from a debugging work, future possible developments are:
Register The Soil Texture Wizard as an R contributed package on R forge;
Write an "integrated help", as for most of the R functions;
Complete and improve the existing tutorial / vignette.
For further developments, you will have to consider doing them yourself!
Contact:
You can contact me, flag eventual errors or inaccuracies by writing at the following address:
| jules |
| -website |
| oo.fr |
[The "image" parts of the address must be copied "manually"! (anti spam tip...)]
Copyleft: Julien MOEYS
Licence of this article and of the tutorial:

This work by Julien MOEYS is licenced under a Creative Commons Licence (Attribution-Share Alike 3.0 Unported).
In other words, you are allowed to copy and distribute this article and the tutorial presented here, to modify them, and even to include them in a commercial activity, if three conditions are met: (1) cite in a way or another the author, (2) maintain the documents and their modified versions under their original license and (3), in case of modifications of the original document, state in a non-ambiguous way that changes were done to the original document. Rename this document, so it is clear that the modifications are not endorsed by the original author.
Licence of the R functions:
The set of R functions presented here, under the name "The Soil Texture Wizard", are licensed under a GNU General Public License version 3.
Guaranties:
The R functions and the documents presented here have been created and tested carefully but, given the free distribution of this work and the highly permissive license, the author is not providing any guarantee of exactitude of the data and functions, and decline any responsibility regarding the use that could be done with that work.
Disclaimer:
The author is actually working for the Swedish University of Agricultural Sciences, SLU and has been employed by the "Environment and Arable Crops" (EGC) research unit (Grignon, France).
This work doesn’t engage the responsibility of the Swedish University of Agricultural Sciences, SLU.
[1] but this possibility is only available for transformation working on 3 particle size classes
[2] In "The Soil Texture Wizard", it is nevertheless possible to zoom using xlim and ylim, but the system lack of flexibility