[R] italics letter in roman string

Marc Schwartz marc_schwartz at comcast.net
Sun Mar 18 03:56:08 CET 2007


On Sat, 2007-03-17 at 22:01 -0400, Chabot Denis wrote:
> Hi,
> 
> As part of the legend to a plot, I need to have the "n" in italics  
> because it is a requirement of the journal I aim to publish in:
> "This study, n = 3293"
> 
> Presently I have:
> legend(20, 105, "This study, n = 3293", pch=1,  col=rgb(0,0,0,0.5),
>                  pt.cex=0.3, cex=0.8, bty="n")
> 
> I suppose I could leave a blank in place of the "n", then issue a  
> text call where I'd use font=3 for a single letter, "n". But it will  
> be tricky to find the exact location to use.
> 
> Is there a way to switch to font=3 just for one letter within a string?
> 
> Thanks in advance,
> 
> Denis Chabot

Denis,

Try something like this:

plot(20, 100)

leg <- legend(20, 105, "This study,    = 3293", pch = 1, 
              col=rgb(0,0,0,0.5), pt.cex = 0.3, cex = 0.8, 
              bty = "n")

text(leg$text$x + strwidth("This study, ", cex = 0.8), 
     leg$text$y, "n", font = 3, cex = 0.8, adj = c(0, 0.5))


Note that legend returns a list structure, which contains the x and y
coordinates of the start of the text strings that are plotted. So I get
that information for your line of text.

Next, I use strwidth() to calculate, in user coordinates, the length of
the characters preceding the 'n', including spaces.  We add that
distance to the x coordinate returned in the legend call.

I also use the 'adj' argument in the text() call, so that it is in synch
with the same parameters in legend() for alignment with the other
letters.

See ?strwidth for more information.

You may have to tweak the horizontal spacing of the 'n' a bit, depending
upon the rest of your graph.

HTH,

Marc Schwartz



More information about the R-help mailing list