[Rd] Grapics Device Resolution Limits

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Feb 10 20:37:19 CET 2017


On 10/02/2017 19:27, Prof Brian Ripley wrote:
> Note that there are at least 5 separate png() devices, so Linux was not
> using the (default) device used on Windows.
>
> In general, the device-limits info is not on the help page because we do
> not know it.  On Windows the default device limits depend on the OS
> version, 32/64-bit, RAM and the graphics hardware.  This sounds like the
> last: you were asking for 49 megapixels which is far larger than the
> largest screens.  (Or all but the highest-end digital cameras, so one
> could well ask what you can usefully do with such an image.)

Scratch that: res is in ppi so the image should be 2755px square: still 
rather large.

> Normally you will get warning(s) accompanying that Error, but it might
> just be
>
> Warning: unable to allocate bitmap
> Warning: opening device failed
>
> The first of those is reporting what the GraphApp toolkit said, talking
> directly to Windows GDI (and look at the Windows documentation for e.g.
> CreateCompatibleBitmap to see that no limits are mentioned).
>
>
> Even on Windows you have the option of using other png() devices:
>
> png(filename = "Rplot03d.png",
>     width = 480, height = 480, units = "px", pointsize = 12,
>     bg = "white", res = NA, family = "", restoreConsole = TRUE,
>     type = c("windows", "cairo", "cairo-png"), antialias)
>
> Try the other 2 types: the cairo devices do not use your graphics
> hardware nor MicroSoft's GDI. (The other 2 devices are Xlib on a
> Unix-alike and Quartz on macOS.)
>
>
> On 10/02/2017 16:54, Martin Maechler wrote:
>>>>>>> Dario Strbenac <dstr7320 at uni.sydney.edu.au>
>>>>>>>     on Fri, 10 Feb 2017 02:00:08 +0000 writes:
>>
>>     > Good day,
>>     > Could the documentation of graphics devices give some
>> explanation of how big the bitmap limits are? For example,
>>
>>     >> png("Figure1A.png", h = 7, w = 7, res = 1000, units = "cm")
>>
>>     > Results in Error: unable to start png() device,
>>
>> This is amazing to me.  I see
>>
>> ------------------------------------------------------------------------------
>>
>>> png("Figure1A.png", h = 7, w = 7, res = 1000, units = "cm")
>>> plot(1)
>>> dev.off()
>> null device
>>           1
>>> file.info("Figure1A.png")[1:5]
>>               size isdir mode               mtime               ctime
>> Figure1A.png 41272 FALSE  644 2017-02-10 17:40:42 2017-02-10 17:40:42
>>>
>> ------------------------------------------------------------------------------
>>
>>
>> in three different versions of R I've tried (all were 64-bit Linux).
>> Note how *small* the file is.
>> Now, I've also tried a 32-bit version of Linux (Ubuntu 14.04 LTS) and get
>> a similar result (not exactly the same number of bytes for the file
>> size).
>>
>>
>>> but the help page of devices doesn't explain that there are any
>>> limits or how they are determined. The wording of the error message
>>> could also be improved, to explain that the resolution is too high or
>>> the dimensions are too large.
>>
>> If one/some of those who can reproduce the problem in their
>> versions of R  provide (concise and not hard to read) patches to
>> the source of R, we'd probably gratefully accept them..
>>
>> Martin Maechler
>>
>>     >> sessionInfo()
>>     > R version 3.3.2 Patched (2017-02-07 r72138)
>>     > Platform: i386-w64-mingw32/i386 (32-bit)
>>     > Running under: Windows 7 (build 7601) Service Pack 1
>>
>>     > --------------------------------------
>>     > Dario Strbenac
>>     > University of Sydney
>>     > Camperdown NSW 2050
>>     > Australia
>


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Emeritus Professor of Applied Statistics, University of Oxford



More information about the R-devel mailing list