[R] expression() - Superscript in y-axis, keeping line break in string

Marc Schwartz (via MN)
2006-08-04T16:01:06Z

On Fri, 2006-08-04 at 09:47 -0600, Andrew Kniss wrote:
> I've tried several different ways to accomplish this, but as yet to no
> avail.  My y-axis for a plot has a rather long label, and thus I have
> been using "/n" to break it into two lines.  However, to make it
> technically correct for publication, I also need to use superscript in
> the label.  For example:
>
>      par(oma=c(0,0,2,0),mar=c(5,6,0.25,2),lheight=1)
>      plot(1:10,
>           ylab="14C-glyphosate line1\n line2")
>
> will provide the text in two lines as I would like it.  However, I am
> trying to keep those same line breaks when using expression() to get my
> superscript number.  This will not work, as it aligns the "14C"
section
> with the bottom line of the expression making little sense to the
> reader.
>
>      par(oma=c(0,0,2,0),mar=c(5,6,0.25,2),lheight=1)
>      plot(1:10,
>           ylab=expression(" "^14*C*"-glyphosate line1\n
line2"))
>
> Is there a way to align the "14C" portion of the expression with
the top
> line of the string rather than the bottom line?  Any suggestions are
> greatly appreciated.
> Andrew

plotmath, as has been covered many times previously, does not support
multi-line expressions. A note should probably be added to ?plotmath on
this.

Thus, you need to create each line in the label separately:

  par(oma=c(0,0,2,0),mar=c(5,6,0.25,2),lheight=1)

  plot(1:10, ylab = "")

  # Now use mtext() to place each line of the y axis label

  mtext(2, text = expression(" "^14*C*"-glyphosate line1"),
line = 3)

  mtext(2, text = "line2", line = 2)

See ?mtext for more information.

HTH,

Marc Schwartz