Hi Simon,
On 10/17/12 12:46 PM, Simon Urbanek wrote:
On Oct 17, 2012, at 3:01 PM, Ray Spence wrote:
Hi Simon,
I'll write in line below -
On 10/17/12 11:34 AM, Simon Urbanek wrote:
Ray,
On Oct 17, 2012, at 2:17 PM, Ray Spence wrote:
Hi Simon,
Thank you very much for your response. I've installed the inline library
and run the function as you wrote. The results are interesting. Following
this procedure on a 24" iMac running OS X 10.7.4 I get this:
f()
518.809mm x 320.842mm
[1] 1.617021
which is pretty close to what you predicted. However, doing the same on another
24" iMac running OS X 10.7.5 I get this:
f()
0mm x 0mm
[1] NaN
which clearly shows a problem. I know that we can set the quartz dpi variable
by hand per session or in users' .Rprofile file which will compensate for this
problem. But I'd like to find a better solution that doesn't require editing any
user file. I suppose this a bug but am not sure if it would belong to R or
to Apple?
Apple - their CGDisplayScreenSize() is returning bogus result. Just to make
sure, please try this in a standalone program w/o R:
disp.c:
#include <stdio.h>
#include <ApplicationServices/ApplicationServices.h>
int main() {
CGSize ds = CGDisplayScreenSize(CGMainDisplayID());
printf("%gmm x %gmm\n", ds.width, ds.height);
return 0;
}
compile and run via
gcc -o disp disp.c -framework AppKit && ./disp
I've done this. Here is the output
host:~# ./disp
262.194mm x 324.255mm
host:~#
Which doesn't look correct (?).
Is this on the machine that reported 0 in R? Also are you running this as the
same user? (I'm a bit wary given the root hash ...).
Good point - I ran disp as root. On the problem host in question I'll run
disp as non-root:
host:/tmp$ ./disp
Oct 17 13:22:02 host.berkeley.edu disp[12852] <Error>: kCGErrorFailure:
Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
0mm x 0mm
host:/tmp$
Which is also clearly messed up.
That said, we can work around that bug in R by not using the screen size when
it's bogus but falling back to something around 90-100 dpi. In fact, I'm
surprised that it doesn't bomb entirely ...
Ok - now a formal question - are you saying that you/R Team can provide a patch
of sorts?
Possibly ...
Ok - I'll look into somehow getting this issue in front of Apple. In the
meantime
We'll hardcode a dpi setting (probably 94) for R on these iMacs.
Thanks again,
Ray
Thanks again Simon,
Ray
Thanks,
Simon
Thanks again
Ray
On 10/15/12 6:32 PM, Simon Urbanek wrote:
Ray,
On Oct 15, 2012, at 8:57 PM, Ray Spence wrote:
All,
There seems to be something wrong between OS X 10.7.5 and how
quartz reads Apple graphics resolution on 24" iMac (early 2008,
iMac8,1) on R 2.15.1 GUI1.52. On this hardware/OS/R version the
default R plot is a rectangle.
Can you attach a screenshot? R is simply reading the geometry reported by the
OS to adjust the aspect ratio accordingly.
Can you run this in R:
install.packages("inline") # if you don't have inline installed yet
library(inline)
f=cfunction(,'CGDirectDisplayID md = CGMainDisplayID(); CGSize ds = CGDisplayScreenSize(md);
Rprintf("%gmm x %gmm\\n", ds.width, ds.height); return ScalarReal(ds.width /
ds.height);','#include <ApplicationServices/ApplicationServices.h>')
f()
You should see this on a 24" iMac8,1:
f()
520mm x 320mm
[1] 1.625
Those are the proper dimensions of the built-in screen.
If that's not what you get, you should be able work around this by setting dpi
manually to 94 (it will be slightly off since the native dpi is asymmetric
93.785 x 95.25 but 94 should be close enough to not notice) - either in
quartz.options() or quartz().
Cheers,
Simon
On same hardware/R version running
OS X 10.7.4 the default R plot is square as expected. (I don't see
this behavior on 20" iMac once upgraded to 10.7.5.)
On this problematic iMac, if I run quartz.options() without changing
anything I see:
quartz.options()
$title
[1] "Quartz %d"
$width
[1] 7
$height
[1] 7
$pointsize
[1] 12
$family
[1] "Helvetica"
$fontsmooth
[1] TRUE
$antialias
[1] TRUE
$type
[1] "native"
$bg
[1] "transparent"
$canvas
[1] "white"
$dpi
[1] NA
But any plot, eg.
plot (rnorm(10),rnorm(10))
returns an image that is most definitely not a square.
Can anyone help me investigate this? For instance where/how
does R create the plot graphic? Are there specific OS X file(s) that R
reads to generate the plots?
My assumption is that this is an Apple Inc. generated problem
but figured that the R community might be a bit more responsive..
Thanks,
Ray
--
*******************
Raymond Spence
U.C. Berkeley
Dept. of Statistics
SCF Sysadmin
497 Evans Hall
U.C. Berkeley
510.642.5497
_______________________________________________
R-SIG-Mac mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-sig-mac
--
*******************
Raymond Spence
U.C. Berkeley
Dept. of Statistics
SCF Sysadmin
497 Evans Hall
U.C. Berkeley
510.642.5497
*******************
--
*******************
Raymond Spence
U.C. Berkeley
Dept. of Statistics
SCF Sysadmin
497 Evans Hall
U.C. Berkeley
510.642.5497
*******************
--
*******************
Raymond Spence
U.C. Berkeley
Dept. of Statistics
SCF Sysadmin
497 Evans Hall
U.C. Berkeley
510.642.5497
_______________________________________________
R-SIG-Mac mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-sig-mac