upside down image/data
the transform that i provided orientates the data matrix so that when plotted with image or levelplot the result is isomorphic to what you see when you print the matrix at the r prompt. i don't know what your data look like---"commented, minimal, self-contained, reproducible code" would help---but you should be able to work out exactly what way you want your data to appear by playing with the example code. i would advise you to produce a data matrix the way you want to see it on the screen, just like the matrix m in the example code, and then view the output with levelplot(inverse(m)), in which case, the answer to your question is you only need to transform the data with inverse() once you get your data matrix to look the way you want at the r prompt.
--- Jenny Barnes <jmb at mssl.ucl.ac.uk> wrote:
Thomas, Thank you for this example, makes it easier to see what levelplot does - does this mean that EVERY time I want to plot with levelplot() I have to not only reverse the columns [,ncol(output.temp):1] but also have to transform the matrix as below? I am only suprised as I don't remember having read about this in the R-info in ?levelplot or R-help website and it seems like a fundamental thing to know if using levelplot! Thanks, Jenny
rm(list=ls(all=TRUE))
graphics.off()
# make a test matrix:
nr<- 3
nc<- 4
# the data:
( m<- matrix((1:(nr*nc)), nr, nc) )
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
# the way that levelplot (and image) displays the data:
t(m)[dim(t(m))[1]:1, ]
[,1] [,2] [,3]
[1,] 10 11 12
[2,] 7 8 9
[3,] 4 5 6
[4,] 1 2 3
# undo what levelplot does by performing the inverse transformation
inverse<- function(x) t(x[dim(x)[1]:1, ])
windows(); levelplot(m, main="levelplot(m)")
windows(); levelplot(inverse(m), main="levelplot(inverse(m))")
Message: 7 Date: Mon, 11 Dec 2006 12:28:17 +0000 (GMT) From: Jenny Barnes <jmb at mssl.ucl.ac.uk> Subject: [R] upside down image/data To: r-help at stat.math.ethz.ch Message-ID: <200612111228.kBBCSHrj013960 at msslhb.mssl.ucl.ac.uk> Content-Type: TEXT/plain; charset=us-ascii Dear R-community, I am looking for some simple advice - I have a matrix (therefore 2
dimensional)
of global temperature. Having read R-help I think that when I ask R to image() or levelplot()
my matrix
will it actually appear upside down - I think I therefore need to use
the line:
levelplot(temperature.matrix[,ncol(output.temp):1], ........)
to get it looking like it was on the globe due to the matrix rows
increasing in
number down the matrix in its dimensions on longitude and latitude but
the
y-axis coordinates increase up the axis. Can anyone simply tell me whether this is correct as I find it very
hard to know
which way up my data should be and I cannot tell which is correct
simply by
looking at it! Many thanks for your time in reading this problem, Jenny Barnes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Jennifer Barnes PhD student - long range drought prediction Climate Extremes Department of Space and Climate Physics University College London Holmbury St Mary, Dorking Surrey RH5 6NT 01483 204149 07916 139187 Web: http://climate.mssl.ucl.ac.uk