If I do

windows(width=6, height=5)

then the pdf plot is very good copy of what I see on screen. So the main issue seems to be that you changed the device size when you asked for the save. If you do that, you need to change 'pointsize' too -- but as you changed the aspect ratio, you cannot make that work exactly.

There is a bug in ggsave() for bitmap devices: it computes the width and height from 'dpi', but it fails to pass that information on to the devices, which assume 72dpi. So what it actually asked for was a 8 x 6.67 inch plot at 72dpi. 72dpi would be a better default, as not all of the many bitmap devices work correctly at other resolutions (and none did prior to R 2.7.0).

If you want an accurate png copy of what you see on screen, use savePlot() or the device menus. That copies the backing bitmap.


On Mon, 12 May 2008, Michael Friendly wrote:

Sorry for not providing this in my initial posting.
I'm using R version 2.7.0 (2008-04-22), on Win XP Pro.

As I said, the .png output matched what I saw on screen.
It was the .pdf output for which the font size was noticeably
larger, enough to make the legend run off the screen.

-Michael

Prof Brian Ripley wrote:
What version of R and OS is this? Prior to R 2.7.0 there was little attempt to match output dimensions from various devices, and one of the png devices in 2.7.0 has an error in doing so, fixed in R-patched (see NEWS).

On Mon, 12 May 2008, Michael Friendly wrote:

Hi

In the following, the graph I see on the screen and the .png output
coincide.  However, in the .pdf file, the fonts seem to be scaled
fairly larger, resulting in the label for the top legend disappearing.
Is this an infelicity or bug, or is there something I've missed?

More generally, how do I control the size of fonts used in legends
and axis labels?

library(car)
library(ggplot2)

qp <-qplot (education , income , shape=type , size=women , colour=prestige ,
     xlab="Education" , ylab="Income", data=Prestige)
  + scale_y_continuous(limits=c(NA, 20000))

Hmm, you can't break the line before '+'.

qp + scale_size(to=c(1,8))

ggsave(file="prestige-ggplot.png", width=6, height=5)  # OK
ggsave(file="prestige-ggplot.pdf", width=6, height=5)  # fonts too large

I would not expect you to be able to specify a smaller size without also reducing 'pointsize'. E.g. dev.print() does so, but ggsave seems not to.

-Michael

--
Brian D. Ripley,                  [EMAIL PROTECTED]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
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