[R-SIG-Mac] Odd quartz behavior on 24" iMac at 10.7.5
Simon Urbanek
simon.urbanek at r-project.org
Wed Oct 17 21:46:04 CEST 2012
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 ...).
>>
>> 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 ...
> 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
>>>>> R-SIG-Mac at r-project.org
>>>>> 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
> *******************
>
>
More information about the R-SIG-Mac
mailing list