Development

NAVIGATION
CATEGORIES
REFERRENCE
LINKS
  • problem with legend on other graphics devices

    1 answers - 2363 bytes - related search similar search Add To My Delicious Add To My Stumble Upon Add To My Google Mark Add To My Facebook Add To My Digg Add To My Reddit

    Hi,
    I have a bit of a problem with a legend in png, eps and pdf plots
    produced from a custom plotting function. I was writing a little
    function to produce some stock plots for a routine analysis conducted in
    our lab. I have a wrapper function figures() (see below) that produces
    eps, png and pdf versions of the lab output. When I draw the plot on the
    X11() device the correct amount of space is made available for the
    legend, but when I draw the plot directly on the png, postscript or pdf
    devices, the legend is placed too close to the edge of the plot and is
    clipped.
    This example uses the actual test data I'm using to write the functions.
    figures() calls the "dating" plot method I wrote to do the plotting, and
    dating() is a wrapper for read.csv() that creates a "dating" object with
    the lab analysis results and some extra meta data. All the R code is in
    dating.R at the URL below.
    felb5 <- dating("",
    cs = 1963, csError = 5,
    csDepth = 22.5, csDepthError = 2)
    source("")
    plot(felb5, as.Age = TRUE)
    figures(felb5, "felbrig5", as.Age = TRUE)
    As you can see, in the generated png, eps and pdf files the legend is
    clipped, but it displays fine on the screen. From the list archives, I
    seem to be doing things in the recommended way (not using dev.copy()
    etc.)
    What can I do to force sufficient space for the legend in the pdf,
    postscript and png plots?
    Many thanks,
    Gav
    figures <- function(object, filename, eps = TRUE, png = TRUE, pdf = TRUE,
    inch.width = 6, inch.height = 6, horizontal = TRUE,
    pixel.width = 600, pixel.height = 600,
    paper = "special", onefile = FALSE, pointsize = 12, )
    {
    if(eps) {
    postscript(paste(filename, ".eps"), width = inch.width,
    height = inch.height, onefile = onefile, paper = paper,
    pointsize = pointsize, horizontal = horizontal)
    plot(object, )
    invisible(dev.off())
    }
    if(png) {
    png(paste(filename, ".png"), width = pixel.width, height = pixel.height,
    pointsize = pointsize)
    plot(object, )
    invisible(dev.off())
    }
    if(pdf) {
    pdf(paste(filename, ".pdf"), width = inch.width,
    height = inch.height, onefile = onefile, paper = paper,
    pointsize = pointsize)
    plot(object, )
    invisible(dev.off())
    }
    }
  • No.1 | | 1347 bytes | |

    Fri, 2006-06-16 at 19:42 +0100, Gavin Simpson wrote:
    Hi,

    I have a bit of a problem with a legend in png, eps and pdf plots
    produced from a custom plotting function. I was writing a little
    function to produce some stock plots for a routine analysis conducted in
    our lab. I have a wrapper function figures() (see below) that produces
    eps, png and pdf versions of the lab output. When I draw the plot on the
    X11() device the correct amount of space is made available for the
    legend, but when I draw the plot directly on the png, postscript or pdf
    devices, the legend is placed too close to the edge of the plot and is
    clipped.

    Hi,

    To follow up, the posted code does work and the legend is not clipped on
    my home machine but that was a slightly less-up-to-date version of R
    2.3.1 patched than the machine at work. So I compiled the latest R2.3.1
    patched (svn revision 38350) and it works fine there also. So must have
    been something peculiar to my set-up at work or R session at the time.

    For the record:
    version
    _
    platform i686-pc-linux-gnu
    arch i686
    os linux-gnu
    system i686, linux-gnu
    status Patched
    major 2
    minor 3.1
    year 2006
    month 06
    day 16
    svn rev 38350
    language R
    version.string Version 2.3.1 Patched (2006-06-16 r38350)

    G

Re: problem with legend on other graphics devices


max 4000 letters.
Your nickname that display:
In order to stop the spam: 7 + 6 =
QUESTION ON "Development"

EMSDN.COM