How to easily visualize a matrix?

16,100

Solution 1

You could try something like (adjusting the parameters to your particular needs)

   image(t(m[nrow(m):1,] ), axes=FALSE, zlim=c(-4,4), col=rainbow(21))

producing something like

enter image description here

Solution 2

See ?image for a single plot (note that row 1 will be at the bottom) and ?rasterImage for adding 1 or more representations to an existing plot. You may want to do some scaling or other transformation on the matrix first.

Solution 3

Not an answer but a longer comment.

I've been working on a package to plot matrices using grid.raster, but it's not quite ready for release yet. Your example would read,

library(gridplot)
row_layout(a, b, c)

layout

I found that writing custom functions was probably easier than tweaking 10s of parameters in lattice or base graphics, and ggplot2 lacks some control over the axes.

However, writing graphics functions from scratch also means reinventing non-trivial things like layout and positioning; hopefully Hadley's scales and guides packages can make this easier. I'll add the functions to gridExtra when the overall design seems sound and more stable.

Share:
16,100
Abe
Author by

Abe

Updated on June 06, 2022

Comments

  • Abe
    Abe almost 2 years

    When doing matrix operations, I would like to be able to see what the results of my calculations are, at least to get a rough idea of the nature of the matrices going in and coming out of the operation.

    How can I plot a matrix of real numbers, so that the x axis represents columns, the y represents rows, and the color or size of a point represents the cell value?

    Ultimately, I would like to display multiple plots, e.g. the right and left hand sides of an equation.

    Here is some example code:

    a <- matrix(rnorm(100), ncol = 10)
    b <- diag(1,10)
    c <- a*b
    
    par(mfrow = c(1,3))
    plot.matrix.fn <- function(m) {
       #enter answer to this question here
    }
    lapply(list(a,b,c), plot.matrix.fn)
    

    update: since posting this question, I found that there are some great examples here: What techniques exists in R to visualize a "distance matrix"?

  • Abe
    Abe almost 13 years
    that is pretty much what I am looking for. Thanks!