stack_mosaic {CHNOSZ}R Documentation

Stacked mosaic diagram


Create a stacked mosaic diagram, where the species formed in the first layer become the basis species for the species formed in the second layer. The species in each layer are usually minerals with different metals; any bimetallic species are added to the second layer.


  stack_mosaic(bases, species1, species2, species12, names = NULL,
    col = list(4, 3, 6), col.names = list(4, 3, 6), fill = NULL,
    dx = list(0, 0, 0), dy = list(0, 0, 0), srt = list(0, 0, 0),
    lwd = list(1, 1, 1), lty = list(1, 1, 1), loga_aq = NULL, = TRUE, ...)



basis species to be changed for each layer (commonly S-bearing aqueous species)


species (minerals and/or aqueous species) with metal 1


species with metal 2


bimetallic species


character, species names (or chemical formulas) for labeling fields


line color


text color


field color


label x-offset


label y-offset


label rotation


line width


line type


numeric, activity of aqueous species

make plots?


arguments for mosaic and affinity


stack_mosaic creates a stacked mosaic diagram following steps that are described in detail in the vignette multi-metal. Briefly, the first layer of the diagram is made by speciating the species in bases across the diagram to form the first set of species in species1. Then, both bases and species1 (the stable species at each point on the diagram) are used to form the second set of species, including those in both species2 and species12.

Note that basis has aqueous S species in the examples provided, and species1 consists of minerals and/or aqueous species with a single metal (e.g. Fe). species2 has minerals and/or aqueous species with a second metal (e.g. Cu), and species12 has bimetallic minerals. For “mixed” diagrams (where species1 or species2 has both minerals and aqueous species), use loga_aq to set the logarithms of activities of aqueous species. Here, only a single value of loga_aq is needed, unlike in mosaic, where a value for each set of basis species is required.

The plot parameters col, col.names, fill, dx, dy, srt, lwd, and lty should be length-3 lists (not vectors). The values of elements 1–3 of the list are recycled to the number of species in species1, species2, and species12, respectively.

For fill, the default is to use no fill except for species12, where the fill color is taken from col.names with added transparency. The default definition of fill is list(NA, NA, add.alpha(col.names[3], "50")).


A list of length two containing the output of each of the diagram calls use to make the diagram.


The bimetallic species in species12 are shown as part of the second layer, although their formation is sensitive to the presence of stable species in the first layer. It follows that changing the order of layers (i.e., swapping species1 and species2) can affect the depiction of mineral assemblages that have species12. It is likely that only one of the alternatives is thermodynamically correct, but currently there is no check to determine which one it is.


# Define temperature (degrees C), pressure (bar), pH and logfO2 ranges
T <- 200
P <- "Psat"
res <- 200
pH <- c(0, 14, res)
O2 <- c(-48, -33, res)

# Define system: Fe-Cu-O-S-Cl
# NOTE: the basis species must include the first species listed
# in each of bases, species1, and species2 below
basis(c("pyrite", "Cu", "Cl-", "H2S", "H2O", "oxygen", "H+"))
basis("H2S", -2)
# Calculate solution composition for 1 mol/kg NaCl
NaCl <- NaCl(T = T, P = P, m_tot = 1)
basis("Cl-", log10(NaCl$m_Cl))

# Define arguments for stack_mosaic: Speciate aqueous sulfur
bases <- c("H2S", "HS-", "HSO4-", "SO4-2")
# Calculate stabilities of Fe-bearing minerals first
species1 <- c("pyrite", "pyrrhotite", "magnetite", "hematite")
# Calculate stabilities of Cu-bearing and FeCu-bearing minerals second
species2 <- c("copper", "cuprite", "tenorite", "chalcocite", "covellite")
species12 <- c("chalcopyrite", "bornite")
# Use abbreviations for Fe-bearing minerals and formulas for Cu-bearing minerals
names1 <- c("Py", "Po", "Mag", "Hem")
names2 <- info(info(species2))$formula
names12 <- info(info(species12))$formula
names <- list(names1, names2, names12)
# Adjust x-position for one species (chalcocite, Cu2S)
dx <- list(c(0, 0, 0, 0), c(0, 0, 0, 1, 0), c(0, 0))
# Use thick dashed lines for the bimetallic species
lwd <- list(1, 1, 2)
lty <- list(1, 1, 2)

# Make the diagram
stack_mosaic(bases, species1, species2, species12, names = names,
  dx = dx, lwd = lwd, lty = lty,
  pH = pH, O2 = O2, T = T, P = P, IS = NaCl$IS)
# Add legend and title
lTP <- lex(lTP(T, P))
db <- describe.basis(c(3:4))
legend("topright", c(lTP, db), bg = "white")
title("Fe-Cu-S-O-H-Cl", font.main = 1)

[Package CHNOSZ version 2.0.0 Index]