[R] map() and pdf clipping

Peter Ehlers ehlers at ucalgary.ca
Tue Nov 30 16:44:53 CET 2010


On 2010-11-30 04:56, Ben Tupper wrote:
> Hi,
>
> I thought it might help if I posted the resulting images.
>
> This is the pdf file where the map polygons are not clipped to the
> plotting boundary.
>
> http://dl.dropbox.com/u/8433654/test-map.pdf
>
> And this is the png file showing the same polygons clipped to the
> plotting boundary which is what I hope to see in the pdf, too.
>
> http://dl.dropbox.com/u/8433654/test-map.png
>
>
> I suspect that there is some simple parameter or sequence I am
> missing... something that a good-heatred dope slap will solve!
>
Hi Ben,
I haven't figured out why this occurs - seems to be something
to do with the way rasterImage and pdf play together. But this
works for me: insert the following line

  do.call("clip", as.list(par('usr')))

before your final map call.

Peter Ehlers

> Thanks,
>
> Ben
>
>
>
> On Nov 29, 2010, at 2:03 PM, Ben Tupper wrote:
>
>> Hello,
>>
>> Below is a function (test.map) that permits drawing the same map
>> using three different devices.  The "pdf" device doesn't clip
>> polygons to the plot region as I see it does by both the native
>> device (in my case "Quartz") and the "png" device.
>>
>> test.map("pdf")  # produces "test-map.pdf" with no clipping
>> test.map("png")  # produces "test-map.png" with clipping
>> test.map(NA) 	# draws on the window device with clipping
>>
>> It doesn't appear to matter what the value of the fill argument is -
>> the pdf output shows that the polygons are not being clipped to the
>> plot region.
>>
>> I have viewed the pdf output using Mac OSX's Preview, PDFPen, Adobe
>> Reader and Safari and they all render the same way. So my hunch is
>> that it is not a viewer issue (although I suppose they might be
>> using the same rendering engine under the hood.)
>>
>> Any help would be greatly appreciated.
>>
>> Thanks and cheers,
>> Ben
>>
>> ###### BEGIN
>> library(maps)
>>
>> test.map<- function(to.file = c("pdf", "png", NA)[1], fill = TRUE){
>>
>>    if (!is.na(to.file)){
>>       ofile = paste("test-map", to.file,sep = ".")
>>       do.call(to.file, list(file=ofile))
>>    }
>>    xr<- c(-185, -155)
>>    yr<- c(45, 70)
>>
>>    map(xlim = xr, ylim = yr)
>>    map.axes()
>>
>>    m<- matrix(seq(0, 1, length = 40*40), nrow = 40)
>>    mr<- as.raster(m)
>>    rasterImage(m, -180, 50, -160, 65)
>>
>>    map(xlim = xr, ylim = yr, fill = fill, add = TRUE)
>>
>>    if (!is.na(to.file)){
>>       cat("wrote:", ofile, "\n")
>>       dev.state<- dev.off()
>>    }
>>
>> }
>>
>>
>> ###### END
>>
>>
>>> sessionInfo()
>> R version 2.12.0 (2010-10-15)
>> Platform: i386-apple-darwin9.8.0/i386 (32-bit)
>>
>> locale:
>> [1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8
>>
>> attached base packages:
>> [1] stats     graphics  grDevices utils     datasets  methods   base
>>
>> other attached packages:
>> [1] mapproj_1.1-8.2    akima_0.5-4        RColorBrewer_1.0-2
>> [4] mapdata_2.1-3      maps_2.1-5
>>
>> loaded via a namespace (and not attached):
>> [1] tools_2.12.0
>>
>>
>>
>> Ben Tupper
>> Bigelow Laboratory for Ocean Sciences
>> 180 McKown Point Rd. P.O. Box 475
>> West Boothbay Harbor, Maine   04575-0475
>> http://www.bigelow.org/
>>



More information about the R-help mailing list