The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Stratigraphic Graphs

N. Frerebeau

2025-10-01

library(aion)
library(igraph)

A stratigraphic graph represents the directed relationships between temporal units (archaeological deposits), from the most recent to the oldest (Harris 1997). It can be formally defined as a directed acyclic graph (DAG), in which each vertex represents a layer and the edges represent stratigraphic relations.

1 From an edge matrix

At the most basic level, stratigraphic relations can be captured in a two-column matrix (or data.frame) of edges, where each row represents a relation element.

## Harris 1997, fig. 12
harris <- data.frame(
  X = c(1, 1, 1, 2, 3, 4, 5, 6, 6, 7, 8),
  Y = c(2, 3, 4, 5, 5, 5, 6, 7, 8, 9, 9)
)

This table of relations can then be used to create a graph. Note that these relations are to be read from the top of the stratigraphic sequence to the bottom (“X is above/later than Y”), but the reverse is possible by changing the direction argument in graph_create().

## Create a graph object
g <- graph_create(harris, direction = "above", type = "stratigraphy")

Multiple edges and loop edges may need to be removed, as well as redundant relations (by transitive reduction):

## Remove redundant relations
g <- graph_prune(g)

Finally, the graph can be plotted with an appropriate layout:

plot(g, layout = layout_with_sugiyama)
plot of chunk plot

plot of chunk plot

2 From time intervals

A stratigraphic graph can also be used to represent temporal relations (posteriority) within a set of time intervals:

## Seven time intervals expressed in years CE
int <- intervals(
  start = c(1, 2, 3, 6, 9, 13, 17),
  end = c(7, 4, 15, 14, 11, 18, 19),
  calendar = CE(),
  names = c("A", "B", "C", "D", "E", "F", "G")
)

## Create a stratigraphic graph
strati <- graph_create(int, type = "stratigraphy")

## Remove redundant relations
strati <- graph_prune(strati)

Equivalence relations (i.e. at least partial contemporaneity) can also be represented with an interval graph:

## Create an interval graph
inter <- graph_create(int, type = "interval")

These two graphs therefore capture all temporal relations:

## Stratigraphic graph
plot(strati, layout = layout_with_sugiyama)

## Interval graph
plot(inter)
plot of chunk graphsplot of chunk graphs

plot of chunk graphs

References

Harris, Edward C., 1997. Principles of Archaeological Stratigraphy. Seconde edition. Academic Press.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.