Re: [R] Plotting rows (or columns) from a matrix in different graphs, not using "par"

From: Marc Schwartz <MSchwartz_at_mn.rr.com>
Date: Wed 15 Jun 2005 - 05:53:05 EST

On Tue, 2005-06-14 at 20:00 +0200, Camarda, Carlo Giovanni wrote:
> Dear R-users,
> I would like to ask whether it's possible (for sure it would be), to
> plot each rows (or columns) in different graphs and in the same figure
> region without using the function "par" and then struggling around with
> "axes" and labels etc.
> Luckily, I would always have "rows + columns = even number" and the same
> "ylim".
>
> The next one could be a sort of example on what I would like to avoid
> plotting the rows of the matrix "mat":
>
> ########### EXAMPLE ######################
> dat <- sort(runif(16, 1, 1000))
> mat <- matrix(dat, ncol=4, byrow = T)
> y <- seq(1950, 1953)
> par(mfrow=c(2,2))
> plot(y, mat[1,], ylim=c(1,1000), axes=F, xlab="", ylab="simul.")
> box()
> axis(side=2, tick=T, labels=T)
> axis(side=3, tick=T, labels=T)
> plot(y, mat[2,], ylim=c(1,1000), axes=F, xlab="", ylab="")
> box()
> axis(side=3, tick=T, labels=T)
> plot(y, mat[3,], ylim=c(1,1000), axes=F, xlab="years", ylab="simul.")
> box()
> axis(side=1, tick=T, labels=T)
> axis(side=2, tick=T, labels=T)
> plot(y, mat[4,], ylim=c(1,1000), axes=F, xlab="years", ylab="")
> box()
> axis(side=1, tick=T, labels=T)
> ########### END EXAMPLE ########################
>
> Naturally something more compact would be even nicer.
>
> Thanks in advance,
> Carlo Giovanni Camarda

If I am understanding what you are trying to do, then using xyplot() from the lattice package (part of the standard R installation) may be best:

Modify 'mat' so that all data is in 'df':

> df <- data.frame("Simul" = as.vector(mat),

                   "Years" = rep(1950:1953, 4),
                   "Group" = rep(LETTERS[1:4], each = 4))


> df
Simul Years Group 1 88.67956 1950 A 2 364.73579 1951 A 3 546.63525 1952 A 4 774.05869 1953 A 5 138.09586 1950 B 6 382.20986 1951 B 7 592.85512 1952 B 8 810.45569 1953 B 9 232.43912 1950 C 10 524.91085 1951 C 11 598.49688 1952 C 12 963.97328 1953 C 13 261.80598 1950 D 14 533.91143 1951 D 15 765.72522 1952 D 16 996.72192 1953 D

# Load the lattice package

> library(lattice)

# Draw the plot, note the use of standard R formulae in the syntax # with the addition of the grouping vector after the '|'

> xyplot(Simul ~ Years | Group, data = df)

See:

library(lattice)
?xyplot

for more information.

HTH, Marc Schwartz



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Jun 15 05:57:27 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:32:38 EST