From xie at yihui.name  Tue Oct 22 03:07:32 2013
From: xie at yihui.name (Yihui Xie)
Date: Mon, 21 Oct 2013 20:07:32 -0500
Subject: [Rd] png(type='cairo'): point symbols without boarders are not
	anti-aliased?
In-Reply-To: <5265AA74.4080509@stat.auckland.ac.nz>
References: <CANROs4eMXzueFLzoeAs7OyRgUMj6fv9jcLZ-GQZd=hxx4jB4nQ@mail.gmail.com>
	<5265AA74.4080509@stat.auckland.ac.nz>
Message-ID: <CANROs4cOqL2H1XX5iKJKAKdv6TmCT-6S=-Csu+x+uUam6LNX-w@mail.gmail.com>

Perhaps yes. Sorry I did not check the bug reports. Can someone
elaborate on the "undesirable artefacts"? I made two heatmaps using
png() and CairoPNG(), respectively. I can see the difference, but it
is not very clear to me what the artefacts are, or what the facts
should be.

png(): http://i.imgur.com/lKrFG9i.png
CairoPNG(): http://i.imgur.com/Dv0rsKK.png

f = function(dev, ...) {
  dev(...)
  x = y <- seq(-4*pi, 4*pi, len = 27)
  r = sqrt(outer(x^2, y^2, "+"))
  z = cos(r^2)*exp(-r/6)
  image(z, main = deparse(substitute(dev)))
  dev.off()
}
f(grDevices::png, 'png-base.png', type = 'cairo')
f(Cairo::CairoPNG, 'png-Cairo.png')

Thanks!

Regards,
Yihui
--
Yihui Xie <xieyihui at gmail.com>
Web: http://yihui.name
Department of Statistics, Iowa State University
2215 Snedecor Hall, Ames, IA


On Mon, Oct 21, 2013 at 5:28 PM, Paul Murrell <paul at stat.auckland.ac.nz> wrote:
> Hi
>
> Is this the same as "Bug 15462" ?
> https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15462
>
> Paul
>
>
> On 10/22/13 10:43, Yihui Xie wrote:
>>
>> Hi,
>>
>> It seems that anti-aliasing in png(type = 'cairo') is not well
>> supported for the point symbols without boarders, e.g. pch = 16. The
>> Cairo package works well, though. You can compare png() with
>> CairoPNG():
>>
>> png(): http://i.imgur.com/8niB3jX.png
>> CairoPNG(): http://i.imgur.com/FZBJOxm.png
>>
>> f = function(dev, ..., main = '') {
>>    dev(...)
>>    plot(c(1, 2, 1, 2), c(1, 1, 2, 2), pch=c(16, 19), cex=c(2, 2, 15, 15),
>>         xlim=c(0.5, 2.5), ylim=c(0.5, 3), main = deparse(substitute(dev)))
>>    dev.off()
>> }
>> f(grDevices::png, 'png-base.png', type = 'cairo')
>> f(Cairo::CairoPNG, 'png-Cairo.png')
>>
>> If I remove the border for pch=19 (i.e. lwd=0), the point shows rough
>> edges as well.
>>
>> I'm not sure if that is expected, or it is due to my misconfiguration
>> somewhere. I installed R via `apt-get install r-base-dev` under Ubuntu
>> using the CRAN repository.
>>
>>> sessionInfo()
>>
>> R version 3.0.2 (2013-09-25)
>> Platform: x86_64-pc-linux-gnu (64-bit)
>>
>> locale:
>>   [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
>> LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
>>   [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
>> LC_PAPER=en_US.UTF-8       LC_NAME=C
>>   [9] LC_ADDRESS=C               LC_TELEPHONE=C
>> LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
>>
>> attached base packages:
>> [1] stats     graphics  grDevices utils     datasets  methods   base
>>
>> loaded via a namespace (and not attached):
>> [1] Cairo_1.5-2 tools_3.0.2
>>
>>> capabilities()
>>
>>      jpeg      png     tiff    tcltk      X11     aqua http/ftp  sockets
>>      TRUE     TRUE     TRUE     TRUE     TRUE    FALSE     TRUE     TRUE
>>    libxml     fifo   cledit    iconv      NLS  profmem    cairo
>>      TRUE     TRUE     TRUE     TRUE     TRUE     TRUE     TRUE



[Rd] png(type='cairo'): point symbols without boarders are not anti-aliased?
Yihui Xie