Thanks Paul. I'm still struggeling with some beginners issues on the ps-import (windows troubles with installing ghostscript), but when I resolved them I'm sure that I can use your example code which loos great to me. Thanks a lot, Thomas
2009/11/4 Paul Murrell <p.murr...@auckland.ac.nz>: > Hi > > > Thomas Steiner wrote: >> >> Hi, >> I'd like to fill an existing svg (or png) map with gradient colors. >> In detail: The file >> >> http://commons.wikimedia.org/wiki/File:Karte_%C3%96sterreich_Bundesl%C3%A4nder.svg >> should be filled with the population density data from this table: >> http://de.wikipedia.org/wiki/%C3%96sterreich#Verwaltungsgliederung >> choosing the right color saturation (or whatever). The final result >> should be something like this map: >> >> http://commons.wikimedia.org/wiki/Image:Bevoelkerungsdichte_-_Oesterreich.svg >> Is there a package or so for these two tasks (filling and color >> density ploting)? > > > The 'grImport' package can help with getting the SVG into R (see > http://www.jstatsoft.org/v30/i04). > > First step is to convert the SVG to PostScript (I used InkScape - you can > play around with how the text comes across, but I'm going to ignore that and > concentrate on the map regions). > > Having done that, the following code loads the map into R and draws it ... > > library(grImport) > PostScriptTrace("Austria-Map-withFonts.ps", charpath=FALSE) > map <- readPicture("Austria-Map-withFonts.ps.xml") > grid.picture(map) > > ... (the orientation may be 90 degrees out and you may get some warnings > about character encodings; the former is easy to fix [see below] and the > latter can just be ignored for now because we are ignoring the text). The > next code shows the breakdown of the map into separate "paths" ... > > grid.newpage() > picturePaths(map) > > ... from which we can see that the regions are the first 10 paths ... > > grid.newpage() > grid.picture(map[1:10], use.gc=FALSE) > > At this point, you can use grImport to draw the regions with different fill > colours, or you can just extract the x,y coordinates of the regions and > go-it-alone. The following code takes the latter path, setting up 10 > different colours, and drawing each region using grid.polygon(). The > orientation is fixed by pushing a rotated viewport first ... > > > colours <- hcl(240, 60, seq(30, 80, length=10)) > grid.newpage() > pushViewport(viewport(angle=-90), > grImport:::pictureVP(map[1:10])) > mapply(function(p, col) { > grid.polygon(p$x, p$y, default.units="native", > gp=gpar(fill=col)) > }, > regions, colours) > > > Hope that helps. > > Paul > > >> Thanks for your help, >> Thomas >> >> ______________________________________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.