31 October 2016
The provenance or plate tectonic source of sandstones is commonly inferred from point counts of their constituent grains (Dickinson and Suczek 1979). I’ve created R code for making the four most common of these ternary diagram provenance plots. A single function, provenancePlot(), is used to create all of these plots.
Source code for this project is contained in sandstoneProvenance.r, and the source code for making ternary diagrams (ternary.r) is also required. See my previous post on making ternary diagrams to understand how to use those functions.
The data should be set up in a data frame, with columns for the grain types, and samples in rows. The functions assume certain names for the grain types, and these must match exactly. In particular, the functions expect to see these column names (case and spelling matter): quartz, chert, plagioclase, kfeldspar, shale, volcanic. If you have other grain types, you will need to modify the data frame function (createDataFrame()) to use your variable names.
For this example, I will read in the data and assign it to a data frame called sandstone.
sandstone <- read.table('provenanceExample.txt', header=TRUE, row.names=1, sep=',')
The most basic of the provenance plots is the Q-F-L plot, which puts monocrystalline and polycrystalline quartz (including chert) at the top, all feldspars at the left, and all lithics (rock fragments, but not chert) at the right. The function provenancePlot() takes two arguments, the first being the data frame, and the second being a string that indicates the type of provenance plot. To make this basic plot, specify 'QFL'. You can pass other arguments to specify how the points will be plotted, using the standard values you would use in any plot() or points() call, such as pch, col, etc. Here, I use small filled circles for the data points (pch=16).
provenancePlot(sandstone, 'QFL', pch=16)
Three other options are available for individual provenance plots:
1) 'QmFLt' plots monocrystalline quartz, feldspar, and total lithics (including chert). It is essentially the same as a QFL plot, but with polycrystalline quartz plotted with the other lithic grains.
2) 'QpLvLs' discriminates among the common types of rock fragments. It plots polycrystalline quartz, volcanic rock fragments, and sedimentary rock fragments at the three corners.
3) 'QmPK' offers insights from the types of feldspars. It plots monocrystalline quartz, plagioclase, and potassium feldspar.
You can plot all four provenance plots at once by setting plot type to 'allFour'.
provenancePlot(sandstone, 'allFour', pch=16)
If you want to add points with different styles to a provenance plot, for example, with different formations or sequences plotted in different colors, first use the ternaryPlot() function to make the ternary plot. Add the fields for the plot with qflFields() or one of the related functions, then finish by adding each set of points with ternary Points().
ternaryPlot(sandstone, labels=c('Q', 'F', 'L'), grid=FALSE, plotPoints = FALSE)
ternaryPoints(dataSet1, pch=16, col='black')
ternaryPoints(dataSet2, pch=16, col='red')
ternaryPoints(dataSet3, pch=16, col='blue') # etc.
Dickinson, W.R., and C.A. Suczek. 1979. Plate tectonics and sandstone compositions. AAPG Bulletin 63:2164—2182.
Comments or questions? Contact me at firstname.lastname@example.org