On 10/01/12 15:25, David Winsemius wrote:

On Jan 9, 2012, at 8:19 PM, Rolf Turner wrote:

On 10/01/12 11:40, John Walker wrote:
I have a small problem with R graphics output. When I use the lattice
package and CairoPDF to generate publication quality graphs I often use
the expression to create an axis title that has microlitres or
micrometers as a unit. I use something like the following
'expression(paste("Length (", mu,"m )"))' as an argument to the xlabel
function. The command works but the mu and 'm' have a space between
them. It looks like 'u m' rather than 'um'. It only seems to happen with
the CairoPDF output on my linux machine, it's fine on the X11 device.
I've fixed it in the past by importing the pdf into inkscape and
manually adjusting the spacing (it's more difficult than it sounds
because I can't actually adjust the spacing but have to delete the mu
and re-enter it).  Is there something I'm doing wrong? Is this a known
bug?  How can I fix it?
I can't help, but I can confirm the problem, for what *that* is worth.

It seems be an unfortunate interaction between lattice graphics and
the cairo_pdf() device.

The space between the "mu" and the "m" does not appear with
``ordinary'' R graphics, irrespective of device, nor does it appear
with lattice graphics and, e.g. the pdf() device.  But it does appear
with lattice graphics *and* the cairo_pdf() device.

That probably means that the problem is subtle and will be difficult
to impossible to fix. :-(

Doubtful. Do either of you realize that `paste` is a plotmath function that is misused more often than correctly used (at least as judged by the number o errors submitted to r-help)? I see no workable example, but if I did I would be trying instead :

expression(Length~mu*m)

You meant expression(Length==mu*m).  And yes that helps a bit, but there's
still a bit more space between the mu and the m than one would like.

Compare:

    require(lattice)
    cairo_pdf(file="mung.pdf")
print(xyplot(y~x,data=data.frame(x=1:10,y=1:10),main=expression(Length==mu*m)))
    dev.off()
and
    pdf(file="gorp.pdf")
print(xyplot(y~x,data=data.frame(x=1:10,y=1:10),main=expression(Length==mu*m)))
    dev.off()

There's not much in it, but there's just enough to be annoying.

    cheers,

        Rolf

P. S. And I have never been able to figure out *anything* about how paste() and expression() interact. It is a complete mystery, and a matter of trying things more
or less at random until something more or less works.

        R. T.

P^2. S. I just realised that there's more space between the letters of "Length" in the cairo_pdf version, as well. Which is, I guess, The Explanation. Is it a font thing?

    R. T.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to