Special characters and superscripts on plot axis titles Special characters and superscripts on plot axis titles r r

Special characters and superscripts on plot axis titles


The one thing that often users fail to grasp is that you invariably don't need to quote strings and paste them together when used in an expression for a plot label. It is usually simpler to use the layout tools directly (e.g. ~ and *). For example:

df <- data.frame(y = rnorm(100), x = rnorm(100))plot(y ~ x, data = df,     ylab = expression(Average ~ Conc ~ of ~ S- ~ on ~ plates ~                        (mu ~ Moles ~ cm^{-2} ~ dry ~ wt)),     xlab = expression(Concentration ~ Cl ~ (mu ~ moles ~ g^{-1} ~ dry ~ wt)))

Alternatively, you can include strings for longer sections of text; in this case it is arguably easier to do:

plot(y ~ x, data = df,     ylab = expression("Average Conc of S- on plates" ~                         (mu ~ moles ~ cm^{-2} ~ "dry wt")),     xlab = expression("Concentration Cl" ~ (mu ~ moles ~ g^{-1} ~ "dry wt")))

but note there is no need to paste strings and other features here.

Both produce:

enter image description here

Note the issue plotmath has with the superscript 2. You may wish to add some extra space for the y-axis margin to accommodate that:

op <- par(mar = c(5,4.5,4,2) + 0.1)plot(y ~ x, data = df,     ylab = expression("Average Conc of S- on plates" ~                          (mu ~ moles ~ cm^{-2} ~ "dry wt")),     xlab = expression("Concentration Cl" ~ (mu ~ moles ~ g^{-1} ~ "dry wt")))par(op)

producing

enter image description here


This solves the problem of the super-scripted closing parenthesis:

# reproducible dataplates <- data.frame(WatexCl = rnorm(100), ConcuM = rnorm(100), Depth = rnorm(100))# alter the default plot margins so the # superscript in the y-axis label is completely displayedpar(mar=c(5,5,4,2))# draw the plotplot(WatexCl ~ ConcuM, data = plates,     col = as.numeric(1),      pch = as.numeric(Depth),      xlab = bquote("Concentration Cl ("*mu~"moles/g dry wt)"),      ylab = bquote("Average Conc of S- on plates ("~mu~"Moles/cm"^"2"*")"))

enter image description here