[R] Speed up graphics output?
Paul Murrell
p.murrell at auckland.ac.nz
Tue May 4 02:44:04 CEST 2004
Hi
Try using par(mfrow=c(2, 2)) instead of split.screen(c(2, 2))
and removing all of the screen(?) commands.
I think what is happening is that you are just overwriting previous
output every time through the loop so your picture just gets bigger and
bigger (more and more overlayed output). With the above adjustments,
every time through the loop should start a clean page so the dev.print()
should only have the same amount of output to write out.
Paul
dsheuman at rogers.com wrote:
> Hi all,
>
> I've written some code to generate 4 maps per screen and write the output to a jpeg. The output is fairly quick at the start (about 5 jpegs per minute) and then slows down greatly (1-2 jpegs per minute).
>
> Is there some way to speed it up? One of my thoughts is to keep the base map static on the screen and just update the points that are being plotted on the map (with the exception of the first map as it has the title I want). I don't know how to do this though. After it writes out the jpeg in updates the screen to blank.
>
> Thanks,
>
> Danny
>
>
>
> platform i386-pc-mingw32
> arch i386
> os mingw32
> system i386, mingw32
> status
> major 1
> minor 9.0
> year 2004
> month 04
> day 12
> language R
>
> -------------------------------------------
> #Input file is comma-delimited and has GeogID, LON, LAT and CLUSTER
> #LON should be in column 2 and LAT in column 3
>
> library(maptools)
>
> #Number of clusters in total
> ClusCount <- 150
>
> #Read in Cluster Assignments
> datain <- as.data.frame( read.table("c:\\data\\Run1\\kmeansout_150.txt", header=TRUE ))
> colnames(datain) <- c("geogid","long","lat","cluster")
>
>
> #Set up screen device
> #split 2x2 - permits 1 map per section
> par(bg="white")
> split.screen(c(2,2))
>
> #Load maps once only
> w <- read.shape("c:\\data\\region1.shp", dbf.data = TRUE)
> x <- read.shape("c:\\data\\region2.shp", dbf.data = TRUE)
> y <- read.shape("c:\\data\\region3.shp", dbf.data = TRUE)
> z <- read.shape("c:\\data\\region4.shp", dbf.data = TRUE)
>
> #Loop through the clusters and produce maps of each region
> #The base maps stay the same with the exception of map1
> #which has the title of Cluster # and the points which
> #reflect the current cluster.
>
> #Subset data on cluster
> for(i in 1:ClusCount){
> mapit <- subset(datain, cluster == i)
>
> screen(1)
> plot(w, xlab="", ylab="", fg="white", axes = F, main=paste("Cluster",i))
> points( as.matrix(mapit[,2]), as.matrix(mapit[,3]), col="red", pch=19)
>
> screen(2)
> plot(x, ylim=c(42.9, 44.2), xlim=c(-80.2, -78.5), xlab="", ylab="", fg="white", axes = F)
> points( as.matrix(mapit[,2]), as.matrix(mapit[,3]), col="red", pch=19)
>
> screen(3)
> plot(y, ylim=c(45.2, 45.8), xlim=c(-74.3, -73.0), xlab="", ylab="", fg="white", axes = F)
> points( as.matrix(mapit[,2]), as.matrix(mapit[,3]), col="red", pch=19)
>
> screen(4)
> plot(z, ylim=c(48.9, 49.7), xlim=c(-123.6, -121.8), xlab="", ylab="", fg="white", axes = F)
> points( as.matrix(mapit[,2]), as.matrix(mapit[,3]), col="red", pch=19)
>
> #send to jpeg
> dev.print(jpeg,file=paste("c:\\temp\\cluster",format(i),"_canada.jpeg",sep=""),width=1024,height=768, pointsize = 12,quality = 100, bg = "white")
>
> }
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
--
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul at stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/
More information about the R-help
mailing list