[R] Multiple plots and postscripts using split function

fd florian.denzinger at uzh.ch
Thu Jul 31 16:37:28 CEST 2014


Hi,

I'm relatively new to R and I would like to do the following:

I have a .csv file with four columns (NAME, ID, YEAR, VALUE) and would like
to do several xy plots with the year on the x-axis and the data values
(measurements) on the y-axis and after that export the different plots to
postcript. 

My .csv file looks something like this (only an example):

NAME				ID		YEAR	VALUE
ADAMS				885		1988		-2
ADAMS				885		1989		0
BAHIA DEL DIABLO		2665		1999		4
BAHIA DEL DIABLO		2665		2000		8
BAHIA DEL DIABLO		2665		2001		19
BAHIA DEL DIABLO		2665		2002		13
BAHIA DEL DIABLO		2665		2003		13
BARTLEY				893		1983		0
BARTLEY				893		1984		-1
BARTLEY				893		1985		0
BARTLEY				893		1988		2
BARTLEY				893		1989		-1
CANADA				877		1972		-1

I have split the different items into groups and I'd like the plots to have
the title of NAME but the filename of the postscript to be exported should
have the ID as filename.

My code so far:

#Set Working Directory:
setwd("/Users/Desktop/FV")
# Read CSV
dat <- read.csv("FV.csv", sep=";", header=TRUE)
# Split Data
ind <- split(x = dat,f = dat[,'ID'])
nam <- names(ind)

sapply(nam, function(x) {
	postscript(x)
	par(mar=c(6,8,6,5), cex=0.8)     
   	plot(ind[[x]][,c('YEAR','VALUE')], 
	type='b', 
	main = x, 
	xlab="Time [Years]", 
	ylab="Front variation")      
	axis(1, at = seq(1800,2100,5), cex.axis=1, labels=FALSE, tcl=-0.3)
   	axis(2, at = seq(-100000,100000,500), cex.axis=1, labels=FALSE,
tcl=-0.3) 
   
	dev.off() 
})

This results in plots with the title and filename of the resulting
postscript being the same. Is there a way to get the plot title out of the
NAME column and the filename out of the ID?

Additionally I'd only like to plot graphs for items with more than 3 data
values. Is this possible to incorporate in the split command?

Another point is that some items have gaps in the time series where no
measurements were taken (in my example: BARTLEY from 1983 to 1985 and 1988
to 1989). I would like to plot using type= 'b' so that the points are
connected with lines, but when doing that, the values between 1985 and 1988
are automatically connected which I don't want. I'd like the plot to start
again at the value where the gap ends (in my example from 1988 onwards). Is
there a solution for this?

Any help is kindly appreciated! Thanks for your help.

Kind regards,
fd



--
View this message in context: http://r.789695.n4.nabble.com/Multiple-plots-and-postscripts-using-split-function-tp4694850.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list