hilbertImage {HilbertVis}R Documentation

Produce a matrix that visualizes a long data vector along a Hilbert curve

Description

Calculate a Hilbert curve visualization of a long data vector and return it as a square matrix.

Usage

hilbertImage(data, level = 9, forEBImage = FALSE)

Arguments

data A (potentially very long) vector of numerical data.
level The level of the Hilbert curve, determining the size of the returned matrix
forEBImage If set to TRUE, an Image object (as defined in the EBImage package) will be returned.
NOTE TO MacOS X USERS: Due to a problem with EBImage's GTK+ bindings you are advised not to use EBImage and HilbertVis/HilbertVisGUI within the same R session as it seems to cause crashes. This shall be rectified soon. [Note added 2008-12-18]

Details

See the package vignette for an explanation of this visualization technique.

Value

A matrix of dimension 2^level x 2^level. Each matrix element corresponds to a bin of consecutive elements of the data vector, the bins arranged to follow the Hilbert curve of the given level. The value of a matrix element is the maximum value of the data vector elements in the bin.
If forEBIImage=TRUE, a true-color Image object is returned instead, where each pixel is colored according to the palette constructed by the function hilbertDefaultPalette.

Note

For an interactive GUI to explore a Hilbert curve visualisation, use the function hilbertDisplay in the HilbertVisGUI package.

Author(s)

Simon Anders, EMBL-EBI, sanders@fs.tum.de

Examples

   # Get a vector with example data
   dataVec <- makeRandomTestData( )
   
   # Plot it in conventional (linear) fashion
   plotLongVector( dataVec )
   
   # Note how the peaks look quite uniform

   # Get the Hilbert curve matrix
   hMat <- hilbertImage( dataVec )
   
   # Plot it with the 'image' function and the 'hilbertDefaultPalette'
   image( hMat, col=hilbertDefaultPalette( max(hMat), asArray=FALSE ) )
   
   # Note how you can now see the non-uniformity hidden in the previous plot.
   # Note also the ugly aliasing when you change the size of the plot window.
   # Using EBImage allows to display in each matrix element as one pixel:
   
   # if( require ( EBImage ) )
   #    display( hilbertImage( dataVec, forEBImage=TRUE ) )

[Package HilbertVis version 1.0.2 Index]